Este %operador de string será "obsoleto no Python 3.1 e removido posteriormente em algum momento" docs.python.org/release/3.0.1/whatsnew/… agora eu me pergunto qual é a maneira mais recomendada para compatibilidade de versão e segurança.
cregox
2
@Cawas sei que é bem tarde, mas gosto de usar str.format(). Ex .: query = "SELECT * FROM {named_arg}"; query.format(**kwargs), onde queryé a string de formato e kwargsé um dicionário com chaves que correspondem aos named_args na string de formato.
Edwin
4
@Cawas Sim, excepto Adam utilizado notação tuplo, onde {0}, {1}, {2}e assim por diante correspondem aos índices de tupla 0, 1, e 2, respectivamente. Como alternativa, também é possível nomear os args (como {named_arg}) e definir cada um no método de formato, da seguinte forma:'Hi {fname} {lname}!'.format(fname='John', lname='Doe')
Edwin
2
@bignose Você marcou as duas perguntas como duplicatas uma da outra, como google.com/…
Parece não haver muito sentido em fornecer esta resposta duplicada. Aqui está outro: '% (string_goes_here) s hello world% (string_goes_here) s hello world% (string_goes_here) s'% {'string_goes_here': s,}. Existe praticamente um número infinito de possibilidades.
mhawke
3
mhawke: postei a mensagem antes de meu navegador recarregar a página, então não sabia naquele momento que a pergunta já havia sido respondida. Você não precisa ser rude cara !!.
Lucas S.
2
@Lucas: Suponho que você tenha demorado 13 minutos para digitar sua resposta :) e obrigado pelo voto negativo ... muito apreciado.
mhawke
13
Depende do que você entende por melhor. Isso funciona se seu objetivo for a remoção da redundância.
s='foo'
string='%s bar baz %s bar baz %s bar baz'%(3*(s,))
Eu acho que o exemplo na pergunta não era sobre 'hello world' repetido, mas um modelo real sem duplicação. É por isso que votei negativamente.
Gra de
1
Fstrings
Se você estiver usando, Python 3.6+pode fazer uso do novo denominado f-stringsque significa strings formatadas e pode ser usado adicionando o caractere fno início de uma string para identificá-la como uma string f .
price =123
name ="Jerry"print(f"{name}!!, {price} is much, isn't {price} a lot? {name}!")>Jerry!!,123is much, isn't 123 a lot? Jerry!
Os principais benefícios de usar strings f são que eles são mais legíveis, podem ser mais rápidos e oferecem melhor desempenho:
Fonte Pandas para todos: Python Data Analysis, por Daniel Y. Chen
Benchmarks
Sem dúvida que os novos f-stringssão mais legíveis, já que não é necessário remapear as strings, mas é mais rápido, conforme afirmado na citação acima?
price =123
name ="Jerry"def new():
x = f"{name}!!, {price} is much, isn't {price} a lot? {name}!"def old():
x ="{1}!!, {0} is much, isn't {0} a lot? {1}!".format(price, name)import timeit
print(timeit.timeit('new()', setup='from __main__ import new', number=10**7))print(timeit.timeit('old()', setup='from __main__ import old', number=10**7))>3.8741058271543776#new>5.861819514350163#old
Executando 10 milhões de testes, parece que os novos f-stringssão realmente mais rápidos no mapeamento.
%
operador de string será "obsoleto no Python 3.1 e removido posteriormente em algum momento" docs.python.org/release/3.0.1/whatsnew/… agora eu me pergunto qual é a maneira mais recomendada para compatibilidade de versão e segurança.str.format()
. Ex .:query = "SELECT * FROM {named_arg}"; query.format(**kwargs)
, ondequery
é a string de formato ekwargs
é um dicionário com chaves que correspondem aosnamed_arg
s na string de formato.{0}
,{1}
,{2}
e assim por diante correspondem aos índices de tupla0
,1
, e2
, respectivamente. Como alternativa, também é possível nomear os args (como{named_arg}
) e definir cada um no método de formato, da seguinte forma:'Hi {fname} {lname}!'.format(fname='John', lname='Doe')
Respostas:
Você pode usar a formatação de string avançada , disponível em Python 2.6 e Python 3.x:
fonte
result = '{st} hello world {st} hello world {st}'.format(st=incoming)
Você pode gostar de ler isto para entender: Operações de formatação de strings .
fonte
Você pode usar o tipo de formatação de dicionário:
fonte
Depende do que você entende por melhor. Isso funciona se seu objetivo for a remoção da redundância.
fonte
fonte
Fstrings
Se você estiver usando,
Python 3.6+
pode fazer uso do novo denominadof-strings
que significa strings formatadas e pode ser usado adicionando o caracteref
no início de uma string para identificá-la como uma string f .Fonte Pandas para todos: Python Data Analysis, por Daniel Y. Chen
Benchmarks
Sem dúvida que os novos
f-strings
são mais legíveis, já que não é necessário remapear as strings, mas é mais rápido, conforme afirmado na citação acima?Executando 10 milhões de testes, parece que os novos
f-strings
são realmente mais rápidos no mapeamento.fonte