Python String Formatting

(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:

Deixe uma resposta

O seu endereço de email não será publicado.