Métodos de String em Python
Domine os métodos de string em Python: strip, split, join, replace, find, upper, lower e mais — com exemplos práticos, armadilhas e quando usar cada um.
As strings em Python possuem um rico conjunto de métodos embutidos que cobrem quase todas as manipulações que você precisará — remover espaços em branco, pesquisar, dividir, juntar, verificar conteúdo e formatar. Como as strings são imutáveis, cada método retorna uma nova string (ou outro valor) em vez de alterar a original.
Este capítulo cobre os métodos de string mais importantes agrupados por finalidade, com exemplos e armadilhas comuns. Para uma introdução sobre como strings são criadas e indexadas, veja o capítulo Python Strings. Para a sintaxe de fatiamento, veja Slicing Strings.
Conversão de Maiúsculas/Minúsculas
upper() e lower()
upper() retorna uma cópia da string com todas as letras convertidas para maiúsculas; lower() faz o oposto.
Esses métodos não consideram o locale para letras ASCII. Para conversão de maiúsculas/minúsculas com suporte a locale (ex.: I com ponto em turco), use o módulo locale ou bibliotecas de terceiros.
title() e capitalize()
title() coloca em maiúscula a primeira letra de cada palavra. capitalize() coloca em maiúscula apenas o primeiro caractere de toda a string e converte o restante para minúsculas.
s = "hello world"
print(s.title()) # Hello World
print(s.capitalize()) # Hello worldAtenção: title() trata qualquer caractere não-letra como limite de palavra, então "it's" se torna "It'S". Use a função string.capwords() da biblioteca padrão quando precisar de uma detecção de palavras mais inteligente.
swapcase()
Inverte as maiúsculas/minúsculas de cada caractere — letras maiúsculas se tornam minúsculas e vice-versa.
print("Hello World".swapcase()) # hELLO wORLDEspaços em Branco e Preenchimento
strip(), lstrip() e rstrip()
Esses métodos removem caracteres no início e/ou no fim da string (espaços em branco por padrão).
s = " Hello World "
print(s.strip()) # "Hello World"
print(s.lstrip()) # "Hello World "
print(s.rstrip()) # " Hello World"Você pode passar uma string de caracteres para remover — não um prefixo/sufixo, mas qualquer combinação desses caracteres:
print("***hello***".strip("*")) # hello
print("xyzhelloyz".strip("xyz")) # hellocenter(), ljust() e rjust()
Preenche uma string até uma largura determinada. Um caractere de preenchimento opcional (padrão: espaço) preenche o espaço extra.
print("hi".center(10)) # " hi "
print("hi".ljust(10, "-")) # "hi--------"
print("hi".rjust(10, "-")) # "--------hi"Esses métodos são úteis para criar tabelas de texto com largura fixa.
zfill()
Preenche uma string numérica com zeros à esquerda para atingir uma largura determinada. Respeita um sinal + ou - no início.
print("42".zfill(5)) # 00042
print("-7".zfill(5)) # -0007Pesquisa e Contagem
find() e rfind()
find(sub) retorna o índice mais baixo onde sub é encontrado, ou -1 se não for encontrado. rfind(sub) encontra o índice mais alto (mais à direita).
s = "Hello World"
print(s.find("World")) # 6
print(s.find("xyz")) # -1
print(s.rfind("l")) # 9Ambos aceitam argumentos opcionais start e end para limitar o intervalo de pesquisa.
index() e rindex()
Funcionam exatamente como find() e rfind(), mas lançam ValueError em vez de retornar -1 quando a substring não é encontrada. Use find() quando a ausência é um caso normal; use index() quando a ausência indica que algo deu errado.
s = "Hello World"
print(s.index("World")) # 6
# s.index("xyz") # raises ValueErrorcount()
Retorna o número de ocorrências não sobrepostas de uma substring.
print("banana".count("a")) # 3
print("banana".count("an")) # 2
print("aaaa".count("aa")) # 2 (non-overlapping)startswith() e endswith()
Retornam True se a string começa ou termina com o prefixo/sufixo fornecido. Ambos aceitam uma tupla de strings para verificar múltiplas opções de uma só vez.
filename = "report.pdf"
print(filename.startswith("report")) # True
print(filename.endswith(".pdf")) # True
print(filename.endswith((".pdf", ".docx"))) # TrueIsso geralmente é mais legível do que fatiamento: filename[-4:] == ".pdf".
Substituição e Divisão
replace(old, new, count=-1)
Retorna uma cópia com cada ocorrência de old substituída por new. Passe um inteiro como terceiro argumento para limitar o número de substituições.
replace() faz uma correspondência literal exata; para substituição baseada em padrão, use a função re.sub() do capítulo Python Regex.
split(sep=None, maxsplit=-1)
Divide a string no separador sep e retorna uma lista. Quando sep é omitido (ou None), divide em qualquer espaço em branco e descarta strings vazias — ideal para tokenizar entradas do usuário.
split() sempre retorna uma lista, mesmo quando o delimitador está ausente (a lista contém apenas a string original).
rsplit(sep=None, maxsplit=-1)
Como split(), mas começa pela direita. Útil quando você quer apenas as últimas partes de uma string.
path = "/home/user/documents/file.txt"
print(path.rsplit("/", 1)) # ['/home/user/documents', 'file.txt']splitlines()
Divide nos limites de linha (\n, \r\n, \r e outros) e opcionalmente mantém os finais de linha.
text = "line one\nline two\r\nline three"
print(text.splitlines()) # ['line one', 'line two', 'line three']join(iterable)
O inverso de split(). Concatena cada item em um iterável, colocando a string na qual é chamado entre cada item. Esta é a maneira preferida de construir uma string a partir de uma lista, pois Python a constrói em uma única etapa.
print(", ".join(["apples", "bananas", "cherries"]))
# apples, bananas, cherries
print("".join(["P", "y", "t", "h", "o", "n"]))
# PythonPara mais detalhes, veja o capítulo Concatenate Strings.
Verificação de Conteúdo
Esses métodos retornam True ou False e são úteis para validação de entradas.
| Método | Retorna True quando… |
|---|---|
isalpha() | Todos os caracteres são letras |
isdigit() | Todos os caracteres são dígitos (0–9) |
isnumeric() | Todos os caracteres são numéricos (inclui ², ½, etc.) |
isalnum() | Todos os caracteres são letras ou dígitos |
isspace() | Todos os caracteres são espaços em branco |
islower() | Todos os caracteres com maiúsculas/minúsculas estão em minúsculas |
isupper() | Todos os caracteres com maiúsculas/minúsculas estão em maiúsculas |
istitle() | A string está no formato de título |
print("Python".isalpha()) # True
print("12345".isdigit()) # True
print("abc123".isalnum()) # True
print(" ".isspace()) # True
print("Hello World".istitle()) # TrueNota: Uma string vazia retorna False para todos esses métodos.
Comprimento
len() é uma função embutida, não um método de string, mas é fundamental para o trabalho com strings.
As strings têm índice zero, portanto os índices válidos são de 0 a len(s) - 1.
Concatenação
O operador + une duas strings. O operador * repete uma string um determinado número de vezes.
Para unir muitas strings ou construir strings em um loop, "".join(list) é significativamente mais rápido do que + em um loop. Veja Concatenate Strings para uma comparação de desempenho.
Formatação
format() e f-strings
str.format() insere valores em marcadores {}. As f-strings (Python 3.6+) fazem o mesmo de forma mais concisa e são agora o estilo preferido.
name = "Alice"
score = 95
# str.format()
print("Hello, {}! Your score is {}.".format(name, score))
# f-string (preferred)
print(f"Hello, {name}! Your score is {score}.")
# Hello, Alice! Your score is 95.Ambos suportam especificadores de formato. Para a sintaxe completa, veja Python String Formatting.
encode()
Converte a string em um objeto bytes usando a codificação fornecida (padrão utf-8).
s = "café"
print(s.encode("utf-8")) # b'caf\xc3\xa9'
print(s.encode("ascii", errors="replace")) # b'caf?'Referência Rápida
| Método | O que faz |
|---|---|
s.upper() | Tudo em maiúsculas |
s.lower() | Tudo em minúsculas |
s.title() | Formato de título (cada palavra) |
s.capitalize() | Primeiro caractere em maiúscula |
s.swapcase() | Inverter maiúsculas/minúsculas |
s.strip(chars) | Remover caracteres do início/fim |
s.lstrip(chars) | Remover caracteres do início |
s.rstrip(chars) | Remover caracteres do fim |
s.center(w, fill) | Centralizar em um campo de largura w |
s.ljust(w, fill) | Alinhar à esquerda em um campo de largura w |
s.rjust(w, fill) | Alinhar à direita em um campo de largura w |
s.zfill(w) | Preencher com zeros à esquerda |
s.find(sub) | Índice mais baixo de sub, ou -1 |
s.rfind(sub) | Índice mais alto de sub, ou -1 |
s.index(sub) | Como find() mas lança ValueError |
s.count(sub) | Contar ocorrências não sobrepostas |
s.startswith(prefix) | True se a string começa com o prefixo |
s.endswith(suffix) | True se a string termina com o sufixo |
s.replace(old, new) | Substituir ocorrências |
s.split(sep) | Dividir em lista |
s.rsplit(sep) | Dividir pela direita |
s.splitlines() | Dividir nos finais de linha |
sep.join(iterable) | Unir iterável com separador |
s.isalpha() | Todas letras? |
s.isdigit() | Todos dígitos? |
s.isalnum() | Todas letras ou dígitos? |
s.isspace() | Todos espaços em branco? |
s.format(...) | Formatar com marcadores |
s.encode(enc) | Codificar para bytes |