Eu construo uma string s
em Python 2.6.5 que terá um número variável de %s
tokens, que correspondem ao número de entradas na lista x
. Preciso escrever uma string formatada. O seguinte não funciona, mas indica o que estou tentando fazer. Neste exemplo, existem três %s
tokens e a lista possui três entradas.
s = '%s BLAH %s FOO %s BAR'
x = ['1', '2', '3']
print s % (x)
Eu gostaria que a string de saída fosse:
1 BLAH 2 FOO 3 BAR
python
string
list
formatting
string-formatting
SabreWolfy
fonte
fonte
(x)
é a mesma coisa quex
. Colocar um único token entre colchetes não tem significado em Python. Você geralmente coloca colchetesfoo = (bar, )
para facilitar a leitura, masfoo = bar,
faz exatamente a mesma coisa.print s % (x)
é o que OP escreveu, eu estava apenas citando ele / ela.foo = (bar, )
:)(x)
notação para maior clareza; ele também evita esquecer os colchetes se você adicionar variáveis adicionais posteriormente.Você deve dar uma olhada no método de formatação do python. Você poderia então definir sua string de formatação assim:
fonte
%
operador apenas descompacta tuplas.s
mais complexa, pois eu precisaria incluir números crescentes em vez de simplesmente%s
para cada posição.s
é construído em várias etapas diferentes, portanto, é muito mais fácil incluir apenas o%s
token.print u'%(blah)d BLAHS %(foo)d FOOS …' % {'blah': 15, 'foo': 4}
.s = '{} BLAH {} BLAH BLAH {} BLAH BLAH BLAH'
Seguindo esta página de recursos , se o comprimento de x variar, podemos usar:
para criar um marcador de posição para cada elemento da lista
x
. Aqui está o exemplo:fonte
Aqui está um forro. Uma pequena resposta improvisada usando format com print () para iterar uma lista.
Que tal isso (python 3.x):
Leia os documentos aqui sobre como usar format () .
fonte
Como acabei de aprender sobre essa coisa legal (indexação em listas de dentro de uma string de formato), estou adicionando a esta velha questão.
Resultado:
No entanto, ainda não descobri como fazer o fatiamento (dentro da string de formato
'"{x[2:4]}".format...
) e adoraria descobrir se alguém tiver uma ideia, no entanto, suspeito que você simplesmente não pode fazer isso.fonte
Esta foi uma pergunta divertida! Outra maneira de lidar com isso para listas de comprimento variável é construir uma função que aproveite ao máximo o
.format
método e a descompactação da lista. No exemplo a seguir, não uso nenhuma formatação sofisticada, mas isso pode ser facilmente alterado para atender às suas necessidades.fonte
O mesmo que a resposta de @neobot, mas um pouco mais moderno e sucinto.
fonte
A saída é
fonte