Eu faço isso no Python 2:
"(%d goals, $%d)" % (self.goals, self.penalties)
Qual é a versão Python 3 disso?
Tentei pesquisar exemplos online, mas continuei obtendo versões do Python 2.
python
python-3.x
string
JoseBazBaz
fonte
fonte
Respostas:
Aqui estão os documentos sobre a sintaxe do "novo" formato. Um exemplo seria:
Se
goals
epenalties
forem inteiros (ou seja, seu formato padrão é ok), pode ser reduzido para:E como os parâmetros são campos de
self
, também há uma maneira de fazer isso usando um único argumento duas vezes (como @Burhan Khalid observou nos comentários):Explicando:
{}
significa apenas o próximo argumento posicional, com formato padrão;{0}
significa o argumento com índice0
, com formato padrão;{:d}
é o próximo argumento posicional, com formato de inteiro decimal;{0:d}
é o argumento com índice0
, com formato decimal inteiro.Existem muitas outras coisas que você pode fazer ao selecionar um argumento (usando argumentos nomeados em vez de posicionais, acessando campos, etc) e muitas opções de formato também (preencher o número, usar separadores de milhares, mostrar o sinal ou não, etc). Alguns outros exemplos:
Observação: como outros apontaram, o novo formato não substitui o anterior, ambos estão disponíveis no Python 3 e nas versões mais recentes do Python 2 também. Alguns podem dizer que é uma questão de preferência, mas IMHO, o mais novo é muito mais expressivo do que o mais antigo e deve ser usado sempre que escrever um novo código (a menos que seja voltado para ambientes mais antigos, é claro).
fonte
"({0.goals} goals, ${0.penalties})".format(self)
"conversion rate: {:.2%}".format(self.goals / self.shots)
:? Funciona bem para mim como está ... (Python 3.4) Observe que não háf
nele, estou pedindo para formatar como uma porcentagem, não como um número de ponto flutuante."{:.2f}%".format(float_num)
funciona bem para ambos.$
não tem nenhum significado especial aqui, nem na sintaxe do formato antigo nem no novo, portanto, deve estar presente na string gerada, inalterada.Python 3.6 agora suporta interpolação de string literal abreviada com PEP 498 . Para o seu caso de uso, a nova sintaxe é simplesmente:
Isso é semelhante ao
.format
padrão anterior , mas permite fazer coisas facilmente como :fonte
Essa linha funciona como está no Python 3.
fonte
Eu gosto dessa abordagem
Observe os d e s anexados aos colchetes, respectivamente.
a saída será:
fonte