F-strings em Python: formatação de strings com exemplos
F-strings vão muito além do básico. Veja truques de formatação que vão impressionar até quem já programa.
Muito mais que colar variáveis
Todo mundo conhece o básico das f-strings:
nome = "Ana"
print(f"Olá, {nome}!") # Olá, Ana!
Mas as f-strings do Python escondem poderes que pouca gente usa. Vamos explorar.
Expressões dentro das chaves
Você pode colocar qualquer expressão Python dentro de {}:
print(f"2 + 3 = {2 + 3}") # 2 + 3 = 5
print(f"{'python'.upper()}") # PYTHON
print(f"{len([1, 2, 3])} itens") # 3 itens
print(f"{'Par' if 10 % 2 == 0 else 'Ímpar'}") # Par
Formatação de números
Casas decimais
pi = 3.14159265
print(f"Pi = {pi:.2f}") # Pi = 3.14
print(f"Pi = {pi:.4f}") # Pi = 3.1416
Separador de milhar
populacao = 214000000
print(f"{populacao:,}") # 214,000,000
print(f"{populacao:_}") # 214_000_000
# Formato brasileiro (ponto como separador)
print(f"{populacao:,.0f}".replace(",", ".")) # 214.000.000
Porcentagem
taxa = 0.0875
print(f"Taxa: {taxa:.1%}") # Taxa: 8.8%
print(f"Taxa: {taxa:.2%}") # Taxa: 8.75%
Alinhamento e preenchimento
nome = "Python"
# Alinhado à direita (padrão para números)
print(f"{nome:>20}") # ' Python'
# Alinhado à esquerda
print(f"{nome:<20}") # 'Python '
# Centralizado
print(f"{nome:^20}") # ' Python '
# Com caractere de preenchimento
print(f"{nome:*^20}") # '*******Python*******'
print(f"{nome:->20}") # '--------------Python'
print(f"{nome:.>20}") # '..............Python'
Útil para criar tabelas e relatórios no terminal:
produtos = [("Café", 12.50), ("Pão", 5.00), ("Leite", 7.90)]
for nome, preco in produtos:
print(f"{nome:<15} R$ {preco:>7.2f}")
# Café R$ 12.50
# Pão R$ 5.00
# Leite R$ 7.90
Debug com = (Python 3.8+)
Esse é o truque favorito dos devs Python. Adicione = depois da expressão:
x = 42
y = "teste"
lista = [1, 2, 3]
print(f"{x = }") # x = 42
print(f"{y = }") # y = 'teste'
print(f"{len(lista) = }") # len(lista) = 3
print(f"{x * 2 = }") # x * 2 = 84
O Python mostra a expressão e o resultado. Perfeito para debug rápido.
Conversão de representação
texto = "Olá\nMundo"
print(f"{texto}") # Olá
# Mundo
print(f"{texto!r}") # 'Olá\nMundo' — mostra a representação (repr)
print(f"{texto!s}") # Olá\nMundo — str() explícito
print(f"{texto!a}") # 'Ol\xe1\nMundo' — ASCII
O !r é ótimo para debug — mostra exatamente o que a string contém, incluindo caracteres especiais.
Datas formatadas
from datetime import datetime
agora = datetime.now()
print(f"{agora:%d/%m/%Y}") # 15/06/2025
print(f"{agora:%H:%M}") # 14:30
print(f"{agora:%A, %d de %B}") # Sunday, 15 de June
print(f"{agora:%d/%m/%Y %H:%M}") # 15/06/2025 14:30
Bases numéricas
numero = 255
print(f"Decimal: {numero:d}") # 255
print(f"Binário: {numero:b}") # 11111111
print(f"Octal: {numero:o}") # 377
print(f"Hexadecimal: {numero:x}") # ff
print(f"Hexadecimal: {numero:X}") # FF
print(f"Hexadecimal: {numero:#x}") # 0xff
F-strings multilinha
nome = "Maria"
idade = 28
cidade = "São Paulo"
mensagem = (
f"Nome: {nome}\n"
f"Idade: {idade}\n"
f"Cidade: {cidade}"
)
Cada linha precisa do seu próprio f. Sem o f, as {} não são interpretadas.
Antes das f-strings
Para apreciar o quanto f-strings são boas, veja como era antes:
nome = "Ana"
idade = 25
# format()
print("Olá, {}! Você tem {} anos.".format(nome, idade))
# % (estilo C)
print("Olá, %s! Você tem %d anos." % (nome, idade))
# f-string — limpo e direto
print(f"Olá, {nome}! Você tem {idade} anos.")
F-strings foram introduzidas no Python 3.6 e são a forma recomendada de formatar strings.
Resumo
| Recurso | Sintaxe | Exemplo |
|---|---|---|
| Casas decimais | :.2f |
3.14 |
| Milhar | :, |
1,000,000 |
| Porcentagem | :.1% |
8.8% |
| Alinhamento | :<20, :>20, :^20 |
alinha texto |
| Debug | {var = } |
x = 42 |
| Repr | {var!r} |
'texto' |
| Data | :%d/%m/%Y |
15/06/2025 |
| Base | :b, :x, :o |
11111111 |
F-strings são uma das melhores features do Python. Quanto mais você usa, mais truques descobre.