Exemplo de Ruby:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
A concatenação bem-sucedida de strings Python é aparentemente detalhada para mim.
Exemplo de Ruby:
name = "Spongebob Squarepants"
puts "Who lives in a Pineapple under the sea? \n#{name}."
A concatenação bem-sucedida de strings Python é aparentemente detalhada para mim.
name
é uma variável local que está na string e, no Python, você precisa passar explicitamente o dicionário de variáveis locais para o formatador de string, se quiser usá-las.Respostas:
O Python 3.6 adicionará interpolação literal de strings semelhante à interpolação de strings do Ruby. Começando com essa versão do Python (que está programada para ser lançada até o final de 2016), você poderá incluir expressões em "f-strings", por exemplo
Antes da 3.6, o mais próximo que você pode chegar disso é
O
%
operador pode ser usado para interpolação de cadeias de caracteres em Python. O primeiro operando é a string a ser interpolada, o segundo pode ter tipos diferentes, incluindo um "mapeamento", mapeando os nomes dos campos para os valores a serem interpolados. Aqui eu usei o dicionário de variáveis locaislocals()
para mapear o nome do camponame
para seu valor como uma variável local.O mesmo código usando o
.format()
método das versões recentes do Python ficaria assim:Há também a
string.Template
classe:fonte
%s
para uma string e%03d
para um número preenchido com 3 dígitos com zeros à esquerda. Poderia ser escritoprint "%s has %03d" % ("Python", 2)
. O exemplo, em seguida, utiliza uma chave de mapeamento entre colchetes, após a%
qual é uma maneira de fornecer aos espaços reservados nomes significativos em vez de confiar na ordem deles na string. Você passa um dicionário que mapeia os nomes das chaves para seus valores. É por isso que Sven está usando alocals()
função que retorna um ditado contendo todas as suas variáveis locais, para que ele sejaname
s
como um tipo de conversão - o Python pode converter praticamente qualquer coisa em uma string. Mas é claro que você perderia os recursos especiais de formatação de outros tipos de conversão.Desde o Python 2.6.X, você pode querer usar:
fonte
%
operador para interpolação de cadeias não é preterido no Python 3.x. docs.python.org/dev/py3k/whatsnew/… anuncia o plano de descontinuação a%
partir do 3.1, mas isso nunca aconteceu.{}
que eu posso ser eliminado.Eu desenvolvi o pacote interpy , que permite a interpolação de strings em Python .
Basta instalá-lo via
pip install interpy
. E então, adicione a linha# coding: interpy
no início dos seus arquivos!Exemplo:
fonte
A interpolação de string do Python é semelhante à printf () de C
Se você tentar:
A tag
%s
será substituída pelaname
variável Você deve dar uma olhada nas tags da função de impressão: http://docs.python.org/library/functions.htmlfonte
print "First is %s, second is %s" % (var1, var2)
.A interpolação de cadeias será incluída no Python 3.6, conforme especificado no PEP 498 . Você será capaz de fazer isso:
Note que eu odeio Bob Esponja, então escrever isso foi um pouco doloroso. :)
fonte
Você também pode ter isso
http://docs.python.org/2/library/string.html#formatstrings
fonte
#
ser impresso. Eles estão apenas usando a sintaxe Ruby.#
personagem seria impresso.Uso:
PS: desempenho pode ser um problema. Isso é útil para scripts locais, não para logs de produção.
Duplicado:
Formatação de string Python:% vs. .format
Qual é o equivalente em Python de incorporar uma expressão em uma string? (ou seja, "# {expr}" em Ruby)
O que é o Ruby equivalente ao `s =" Olá,% s do Python. Onde está o% s? " % ("João", "Maria") `
Existe um Python equivalente à interpolação de string do Ruby?
fonte
Para Python antigo (testado no 2.4), a solução principal aponta o caminho. Você consegue fazer isso:
E você recebe
fonte
Python 3.6 e mais recente têm interpolação literal de strings usando f-strings:
fonte