Guia Completo de Formatação de Strings em Python usando format e f-strings

Introdução à Formatação de Strings

A partir do Python 2.7 e consolidado nas versões 3.x, o método format() surgiu como uma alternativa robusta e flexível ao operador de módulo (%) para formatação de strings. Ele utiliza chaves {} e dois pontos : para definir como os valores devem ser inseridos e estilizados no texto.

  1. Preenchimento Sequencial Padrão

Quando nenhum índice ou nome é especificado dentro das chaves, o método format() insere os argumentos na exata ordem em que são fornecidos.

linguagem = 'Python'
ferramenta = 'Automação'
mensagem = '{} é excelente para {}.'.format(linguagem, ferramenta)
print(mensagem)  # Saída: Python é excelente para Automação.

  1. Definição de Índices Posicionais

É possível controlar a ordem de inserção passando os índices numéricos dos argumentos. O índice 0 refere-se ao primeiro argumento, 1 ao segundo, e assim por diante. Isso também permite a reutilização do mesmo argumento.

fruta = 'Maçã'
cor = 'Vermelha'
descricao = 'A {0} tem a cor {1}. Gosto muito de {0}.'.format(fruta, cor)
print(descricao)
# Saída: A Maçã tem a cor Vermelha. Gosto muito de Maçã.

  1. Uso de Argumentos Nomeados (Keywords)

Em vez de posições, você pode utilizar nomes (chaves) para mapear os valores, o que torna o código mais legível, especialmente em strings complexas.

modelo = 'Sedan'
marca = 'Toyota'

# Usando nomes exatos das variáveis
info_carro = '{modelo} da {marca}'.format(modelo=modelo, marca=marca)
print(info_carro)

# Usando nomes arbitrários para as chaves
detalhes = 'Veículo: {tipo} | Fabricante: {fabricante}'.format(tipo=modelo, fabricante=marca)
print(detalhes)

  1. Controle de Casas Decimais

Para números de ponto flutuante, o formato :.Nf permite limitar a quanitdade de casas decimais exibidas, onde N é o número desejado.

preco = 45.6789

print('{:.1f}'.format(preco))  # 1 casa decimal: 45.7
print('{:.2f}'.format(preco))  # 2 casas decimais: 45.68
print('{:.3f}'.format(preco))  # 3 casas decimais: 45.679

taxa_negativa = -12.3456
print('{:.2f}'.format(taxa_negativa))  # Saída: -12.35

  1. Alinhamento Central com Preenchimento

O caractere ^ é usado para centralizar o texto dentro de um espaço definido. Você pode especificar um caractere de preenchimento logo antes do ^.

palavra = 'Dados'

# Centralizado em 10 espaços, preenchido com hifens
print('{:-^10}'.format(palavra))  # Saída: --Dados---

# Centralizado em 11 espaços, preenchido com asteriscos
print('{:*^11}'.format(palavra))  # Saída: ***Dados***

  1. Alinhamento à Esquerda

O símbolo < alinha o conteúdo à esquerda, preenchendo o espaço restante à direita com o caractere escolhido (ou espaço por padrão).

item = 'Celular'

# Alinhado à esquerda em 12 caracteres, preenchido com pontos
print('{:.<12}'.format(item))  # Saída: Celular.....

# Alinhado à esquerda em 10 caracteres, preenchido com zeros
print('{:0<10}'.format(item))  # Saída: Celular000

  1. Alinhamento à Direita

O símbolo > realiza o alinhamento à direita, adicionando o preenchimento à esquerda do texto.

codigo = 'ID'

# Alinhado à direita em 8 espaços, com underline
print('{:_>8}'.format(codigo))  # Saída: ______ID

# Alinhado à direita em 6 espaços, com zeros
print('{:0>6}'.format(codigo))  # Saída: 0000ID

  1. Formatação de Porcentagem

O modificador % multiplica o número por 100 e adiciona o símbolo de porcentagem. É possível combinar com a definição de casas decimais.

conversao = 0.8452

print('{:%}'.format(conversao))    # Padrão (6 casas): 84.520000%
print('{:.1%}'.format(conversao))  # 1 casa decimal: 84.5%
print('{:.2%}'.format(conversao))  # 2 casas decimais: 84.52%

  1. Notação Científica (Exponencial)

Para exibir números muito grandes ou muito pequenos, utilize o e (minúsculo) ou E (maiúsculo) para notação científica.

distancia = 384400000

print('{:e}'.format(distancia))    # Padrão: 3.844000e+08
print('{:.2e}'.format(distancia))  # 2 casas: 3.84e+08
print('{:.1E}'.format(distancia))  # 1 casa, E maiúsculo: 3.8E+08

  1. Conversão de Bases Numéricas

O método format() facilita a conversão e exibição de inteiros em diferentes bases (binária, octal, hexadecimal).

valor = 255

print('Binário: {:b}'.format(valor))            # 11111111
print('Octal: {:o}'.format(valor))              # 377
print('Hexadecimal (min): {:x}'.format(valor))  # ff
print('Hexadecimal (mai): {:X}'.format(valor))  # FF
print('Decimal: {:d}'.format(valor))            # 255

  1. Escape de Chaves Literais

Se você precisar exibir chaves literais na string final, basta duplicá-las ({{ e }}) para que o interpretador não as trate como campos de formatação.

nome_var = 'resultado'
texto = 'A variável {{{}}} armazena o valor final.'.format(nome_var)
print(texto)
# Saída: A variável {resultado} armazena o valor final.

  1. Interpolação com f-strings (Python 3.6+)

Introduzidas no Python 3.6, as f-strings oferecem uma sintaxe mais concisa e direta, avaliando as expresssões dentro das chaves em tempo de execução.

usuario = 'Admin'
nivel_acesso = 5

# Prefixando a string com 'f' ou 'F'
mensagem_acesso = f'Usuário {usuario} possui nível de acesso {nivel_acesso}.'
print(mensagem_acesso)

# Também suporta as mesmas regras de formatação
pi = 3.14159265
print(f'Valor de Pi aproximado: {pi:.3f}')

Tags: Python formatação de strings str format f-strings manipulação de texto

Publicado em 6-26 04:39