Existem várias maneiras de se formatar strings em Python. Iremos apresentar vários exemplos, que também podem ser testados na Python shell. Para saber mais, de forma completa e detalhada, consulte a documentação oficial.
format()
Recebe um valor e, opcionalmente, uma especificação de formatação como parâmetro. Retorna uma string.
>>> format(3) # apenas o valor
'3'
>>> format(3, "d") # valor e indicação de inteiro
'3'
>>> format(3, ".2f") # valor e indicação de float com duas casas decimais
'3.00'
str.format()
A string str
é um template com pontos de
substituição delimitados por
pares {}
. Estes pontos serão preenchidos com os
valores fornecidos ao método format()
,
respeitando-se a posição ou o nome do
parâmetro. Veja os exemplos:
Parâmetros por posição
>>> Apenas um parâmetro
... "a = {}".format(100)
'a = 100'
>>> Dois parâmetros, preenchidos na ordem natural
... "a = {}, b = {}".format(100, 200)
'a = 100, b = 200'
>>> Dois parâmetros, com indicação da ordem natural
... "a = {0}, b = {1}".format(100, 200)
'a = 100, b = 200'
>>> Dois parâmetros, indicando ordem inversa
... "a = {1}, b = {0}".format(200, 100)
'a = 100, b = 200'
>>> Dois parâmetros, com duas ocorrências do segundo
... "a = {0}, b = {1}, c = {1}".format(100, 200)
'a = 100, b = 200, c = 200'
Parâmetros por nome
>>> Um parâmetro, duas ocorrências
... "a = {x}, b = {x}".format(x = 100)
'a = 100, b = 100'
>>> Dois parâmetros, dois nomes
... "a = {x}, b = {y}".format(x = 100, y = 200)
'a = 100, b = 200'
>>> Dois parâmetros, dois nomes utilizados em ordem inversa
>>> "b = {y}, a = {x}".format(x = 100, y = 200)
'b = 200, a = 100'
Formatação por tipo
Será feita no template, precedida por :
. Pode
ser colocada isoladamente :<desc_tipo>
ou
após a indicação
posição <pos>:<desc_tipo>
ou do
nome <nome>:<desc_tipo>
ou . Veja os exemplos com
o controle de casas decimais de um float
.
>>> Um parâmetro, um float com duas casas decimais
"a = {:.2f}".format(100)
'a = 100.00'
>>> Um parâmetro, duas e três casas decimais
"a = {0:.2f}, b = {0:.3f}".format(100)
'a = 100.00, b = 100.000'
>>> Dois parâmetros, ordem inversa
"b = {y:.1f}, a = {x:.2f}".format(x = 100.1234, y = 100.567)
'b = 100.6, a = 100.12'
%
(deprecated)Esta forma utiliza uma string template com pontos de
substituição indicados por %
ou %<desc_tipo>
, seguida do caractere %
e de um valor ou de uma lista de valores entre parênteses
(tupla). Esta forma é antiga e poderá não
funcionar nas próximas versões de Python.
>>> "a = %d" % 100
'a = 100'
>>> "a = %d, b = %d" % (100, 200)
'a = 100, b = 200'
>>> "a = %.2f, b = %.5f" % (100, 200.123)
'a = 100.00, b = 200.12300'