Atualizado: 04/11/2024

Formatando Strings - Python

Uma maneira de inserir valores em uma string é utilizando f-strings, que são strings precedidas pelo símbolo f:

first_name = "Tom"
text = f"Hello, {first_name}."
print(text)     # Hello, Tom.

name = "Bob"
age = 23
info = f"Name: {name}\t Age: {age}"
print(info)     # Name: Bob  Age: 23

Mas em Python também existe um método alternativo, o método format(). Este método permite formatar uma string, inserindo valores específicos no lugar de marcadores.

Para inserir valores na string, utilizam-se parâmetros especiais delimitados por chaves {}.

Parâmetros nomeados

Na string formatada, podemos definir parâmetros e passar valores para esses parâmetros no método format():

text = "Hello, {first_name}.".format(first_name="Tom")
print(text)     # Hello, Tom.

info = "Name: {name}\t Age: {age}".format(name="Bob", age=23)
print(info)     # Name: Bob  Age: 23

Os argumentos no método format() são definidos com o mesmo nome que os parâmetros na string. Assim, se o parâmetro é chamado first_name, como no primeiro caso, o argumento que recebe o valor também é chamado first_name.

Parâmetros por posição

Também podemos passar uma sequência de argumentos para o método format(), e na string formatada inserir esses argumentos especificando seu índice entre chaves (a numeração começa em zero):

info = "Name: {0}\t Age: {1}".format("Bob", 23)
print(info)     # Name: Bob  Age: 23

Além disso, podemos inserir os argumentos na string várias vezes:

text = "Hello, {0} {0} {0}.".format("Tom")

Substituições

Outra maneira de inserir valores formatados em uma string é usando substituições ou marcadores especiais, onde valores específicos são inseridos. Para formatação, podemos usar os seguintes marcadores:

  • s: para inserir strings

  • d: para inserir números inteiros

  • f: para inserir números decimais. Para esse tipo, também é possível definir o número de casas decimais após o ponto.

  • %: multiplica o valor por 100 e adiciona o símbolo de porcentagem

  • e: exibe o número em notação exponencial

O formato geral de um marcador é o seguinte:

{:marcador}

Dependendo do marcador, podemos adicionar parâmetros adicionais. Por exemplo, para formatar números float, podemos usar os seguintes parâmetros:

{:[largura][,][.número_de_casas_decimais]marcador}

Quando chamamos o método format(), passamos os valores como argumentos, que serão inseridos nos lugares dos marcadores:

welcome = "Hello {:s}"
name = "Tom"
formatted_welcome = welcome.format(name)
print(formatted_welcome)        # Hello Tom

Formatando números inteiros

source = "{:d} dollars"
number = 5
target = source.format(number)
print(target)   # 5 dollars

Se o número formatado for maior que 999, podemos especificar no marcador que desejamos usar uma vírgula como separador de milhares:

source = "{:,d} dollars"
print(source.format(5000))   # 5,000 dollars

Além disso, podemos usar marcadores em f-strings:

number = 50
text = f"{number:,d} cent"
print(text)     # 50 cent

Para números decimais (float), podemos especificar quantas casas decimais queremos exibir, colocando um ponto seguido do número de casas decimais antes do código do marcador:

number = 23.8589578
print("{:.2f}".format(number))   # 23.86
print("{:.3f}".format(number))   # 23.859
print("{:.4f}".format(number))   # 23.8590
print("{:,.2f}".format(10001.23554))    # 10,001.24

Outro parâmetro permite definir a largura mínima do valor formatado em caracteres:

print("{:10.2f}".format(23.8589578))    #     23.86
print("{:8d}".format(25))               #      25

Se o valor formatado for menor que a largura mínima, espaços em branco serão adicionados à esquerda. Se o valor for maior, a largura mínima será ignorada.

Para exibir porcentagens, usamos o marcador %:

number = 0.12345
print("{:%}".format(number))        # 12.345000%
print("{:.0%}".format(number))      # 12%
print("{:.1%}".format(number))      # 12.3%

print(f"{number:%}")        # 12.345000%
print(f"{number:.0%}")      # 12%
print(f"{number:.1%}")      # 12.3%

Para exibir um número em notação exponencial, usamos o placeholder e:

number = 12345.6789
print("{:e}".format(number))        # 1.234568e+04
print("{:.0e}".format(number))      # 1e+04
print("{:.1e}".format(number))      # 1.2e+04

print(f"{number:e}")        # 1.234568e+04
print(f"{number:.0e}")      # 1e+04
print(f"{number:.1e}")      # 1.2e+04

Formatação sem o método format

Existe ainda outra maneira de formatar usando a sintaxe a seguir:

string % (parâmetro1, parâmetro2, ..., parâmetroN)

Isto é, primeiro vem a string que contém os mesmos marcadores mencionados anteriormente (exceto o marcador %), seguida do símbolo de porcentagem %, e então uma lista de valores que serão inseridos na string. O símbolo de porcentagem representa uma operação que resulta em uma nova string:

info = "Name: %s \t Age: %d" % ("Tom", 35)
print(info)   # Name: Tom     Age: 35

Após o marcador, usamos o símbolo de porcentagem e, diferente da função format(), aqui não precisamos de chaves.

Os métodos de formatação de números também são aplicáveis aqui:

number = 23.8589578
print("%0.2f  - %e" % (number, number))   # 23.86  - 2.385896e+01

Definindo o comprimento da string

Podemos definir o comprimento da string ao formatar usando símbolos especiais:

  • <N: alinha a string à esquerda e preenche com espaços à direita até o comprimento N

  • >N: alinha a string à direita e preenche com espaços à esquerda até o comprimento N

  • ^N: alinha a string ao centro e preenche com espaços à esquerda e à direita até o comprimento N

  • .N: define o comprimento exato da string. Se ela tiver mais que N caracteres, é truncada

Por exemplo:

str = "Hello World"
print(f"{str:>16}!")
print(f"{str:<16}!")
print(f"{str:^16}!")
print(f"{str:.16}!")
print(f"{str:.5}!")

Resultado:

     Hello World!
Hello World     !
    Hello World   !
Hello World!
Hello!
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com