(Patrocinadores) Comece a aprender Python com o tutorial gratuito de Introdução ao Python do DataCamp. Aprenda Ciência dos Dados completando desafios de codificação interativa e assistindo a vídeos de instrutores especializados. Comece Agora!
Atualizado em 07 de janeiro de 2020
O método format()
permite que você formate a string da maneira que quiser.
Sintax: template.format(p1, p1, .... , k1=v1, k2=v2)
Template é uma string contendo códigos de formato, format()
O método usa o seu argumento para substituir o valor de cada código de formato. Por exemplo:
>>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31)
{0}
e {1}
são códigos de formato. O código de formato {0}
é substituído pelo primeiro argumento de format()
, ou seja, 12
, enquanto {1}
é substituído pelo segundo argumento de format()
, ou seja, 31
.
Saída esperada:
Sam has 12 red balls and 31 yellow balls
Esta técnica é adequada para uma formatação simples, mas e se você quiser especificar a precisão no número do ponto flutuante? Para tal, você precisa aprender mais sobre os códigos de formato. Aqui está a sintaxe completa dos códigos de formatação.
Sintaxe: {:}
A type
pode ser usada com códigos de formatação:
Códigos de formato | Descrição |
---|---|
d |
para números inteiros |
>f |
para números de ponto flutuante |
b |
para números binários |
o | para números octais |
x |
para números octais hexadecimais |
s |
para cordas |
e |
para ponto flutuante em formato exponencial |
Exemplos seguintes tornarão as coisas mais claras.
Exemplo 1:
>>> "Floating point {0:.2f}".format(345.7916732)
Aqui especificamos 2
dígitos de precisão e f
é usado para representar o número do ponto flutuante.
Edição esperada:
Floating point 345.79
Exemplo 2:
12 |
>>> import math>>> "Floating point {0:10.3f}".format(math.pi) |
Aqui especificamos 3
dígitos de precisão, 10
para largura e f
para número de ponto flutuante.
>
Saída esperada:
Floating point 3.142
Exemplo 3:
"Floating point pi = {0:.3f}, with {1:d} digit precision".format(math.pi, 3)
Aqui d
em {1:d}
representa o valor inteiro.
>
Saída esperada:
Floating point pi = 3.142, with 3 digit precision
Precisão somente em caso de números de ponto flutuante, se você especificar a precisão para o número inteiro ValueError
será elevado.
Exemplo 5:
'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)
Saída esperada:
Sam has 31 red balls and 12 yellow balls
Exemplo 6:
"In binary 4 is {0:b}".format(4) # b for binary, refer to Fig 1.1
Saída esperada:
In binary 4 is 100
Exemplo 7:
12 |
array = "A = {0}, B = {1}, C = {2}".format(*array) |
Saída esperada:
A = 34, B = 66, C = 12
Exemplo 8:
123456 |
d = {'hats' : 122,'mats' : 42}"Sam had {hats} hats and {mats} mats".format(**d) |
Saída esperada:
Sam had 122 hats and 42 mats
O método format()
também suporta argumentos de palavras-chave.
'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)
Nota ao usar argumentos de palavras-chave, precisamos usar argumentos dentro de {}
e não índice numérico.
>
Você também pode misturar argumentos de posição com argumentos de palavras-chave
12 |
'Sam has {red} red balls, {green} yellow balls \and {0} bats'.format(3, red = 12, green = 31) |
O format()
método de formatação de string é bastante novo e foi introduzido no Python 2.6 . Há outra técnica antiga que você verá em códigos legados que permite formatar string usando %
operador em vez de format()
método.
Vejamos um exemplo.
"%d pens cost = %.2f" % (12, 150.87612)
Aqui estamos usando a string modelo à esquerda de %
. Em vez de {}
para códigos de formato, estamos a usar %
. No lado direito de %
usamos tuple para conter os nossos valores. %d
e %.2f
são chamados como especificadores de formato, eles começam com %
seguido por um caractere que representa o tipo de dado. Por exemplo %d
especificador de formato é um espaço reservado para um número inteiro, da mesma forma %.2f
é um espaço reservado para o número de ponto flutuante.
Então %d
é substituído pelo primeiro valor do tuple i.e. 12
e %.2f
é substituído pelo segundo valor i.e. 150.87612
.
Saída esperada:
12 pens cost = 150.88
Mais alguns exemplos.
>
Exemplo 1:
Novo:
"{0:d} {1:d} ".format(12, 31)
>
Lev:
"%d %d" % (12, 31)
Saída esperada:
12 31
Exemplo 2:
Novo:
"{0:.2f} {1:.3f}".format(12.3152, 89.65431)
Old:
"%.2f %.3f" % (12.3152, 89.65431)
Edição esperada:
12.32 89.654
Exemplo 3:
Novo:
"{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 )
Old: