Strings & f-strings
Objetos str do Python representam texto Unicode. f-strings incorporam expressões diretamente em literais, tornando a formatação legível e rápida. Saber quando usar bytes evita bugs de codificação nas fronteiras do sistema.
Busque em todas as páginas da documentação
Objetos str do Python representam texto Unicode. f-strings incorporam expressões diretamente em literais, tornando a formatação legível e rápida. Saber quando usar bytes evita bugs de codificação nas fronteiras do sistema.
name = "Ada"
score = 97.456
line = f"{name:>10} | {score:.1f}%"
multiline = f"""Relatório para {name}
Pontuação: {score:.2f}"""
raw_path = r"C:\new\data\file.txt"Quando usar isso:
from pathlib import Path
def build_report(rows: list[dict[str, object]]) -> str:
header = f"{'name':<12} {'role':<10} {'score':>6}"
lines = [header, "-" * len(header)]
for row in rows:
lines.append(
f"{row['name']:<12} {row['role']:<10} {row['score']:>6.1f}"
)
return "\n".join(lines)
def slugify(text: str) -> str:
cleaned = text.strip().lower()
for ch in " /_":
cleaned = cleaned.replace(ch, "-")
while "--" in cleaned:
cleaned = cleaned.replace("--", "-")
return cleaned.strip("-")
def read_utf8_file(path: Path) -> str:
return path.read_text(encoding="utf-8")
def to_bytes_payload(message: str) -> bytes:
return message.encode("utf-8")
if __name__ == "__main__":
sample = [
{"name": "Ada", "role": "admin", "score": 98.2},
{"name": "Linus", "role": "dev", "score": 91.0},
]
print(build_report(sample))
print(slugify(" Hello World / API "))
print(to_bytes_payload("ok"))O que isso demonstra:
:<12, :>6.1f)strip, lower e replace formam um pipeline simples de slugPath.read_text(encoding="utf-8") evita surpresas de codificação padrão da plataformastr.encode produz bytes para protocolos de comunicaçãostr do Python 3 é Unicode; a indexação retorna strings de um ponto de código (na maioria das vezes).f"{x=}" mostra o nome e o valor (3.8+).bytes armazena valores de 0 a 255; decodifique com um codec explícito.unicodedata.normalize ajuda a comparar caracteres visualmente semelhantes.| Método | Propósito |
|---|---|
split(sep) | Quebra no delimitador |
join(iterable) | Concatena com separador |
strip(chars) | Trunca as extremidades |
replace(old, new) | Substitui substrings |
removeprefix/suffix | Trunca prefixo/sufixo conhecido (3.9+) |
text = " hello "
text.strip().casefold() == "HELLO".casefold() # comparação insensível a maiúsculas/minúsculas
b"\xc3\xa9".decode("utf-8") # bytes -> str
"résumé".encode("ascii", errors="replace") # fallback com perdaopen("f.txt") usa o padrão local em alguns sistemas. Correção: Sempre passe encoding="utf-8".b"hi" + "there" gera TypeError. Correção: Codifique ou decodifique explicitamente primeiro.+= enorme em loops é lento para texto massivo. Correção: Colete em uma lista e use "".join(lines)."café" != "café" com caracteres combinados diferentes. Correção: Normalize antes de comparar.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| f-strings | Maior parte da formatação | Necessita de template preguiçoso para catálogos de i18n |
str.format | Posição de templates a partir de configuração | Formatação inline simples |
Template | Substituição mais segura a partir de entrada do usuário | Necessidades completas de especificação de formato |
regex (re) | Extração de padrões complexos | split simples é suficiente |
Geralmente sim - as expressões são avaliadas uma vez em tempo de execução com menos sobrecarga. Prefira f-strings para código novo.
Protocolos de rede, formatos de arquivo binário e resumos criptográficos operam em bytes. Converta na fronteira.
UTF-8 para arquivos de texto, JSON HTTP e logs, a menos que uma especificação exija o contrário.
Use aspas triplas: f"""linha1\n{name}""". Novas linhas no literal são preservadas.
r"\\server\share" trata barras invertidas literalmente - útil para regex e caminhos do Windows na documentação.
f"{1_000_000:,}" produz 1,000,000. Sublinhados em literais também são cosméticos para legibilidade.
Sim: f"{len(items)} itens". Mantenha as expressões simples para legibilidade.
str.strip remove apenas as extremidades. Para todas as ocorrências, use replace ou re.sub.
Normalização agressiva de maiúsculas/minúsculas para comparações - melhor que lower() para correspondência Unicode.
Nunca interpole a entrada do usuário. Use consultas parametrizadas do seu driver de banco de dados ou ORM.
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026