W3docs

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.

python— editable, runs on the server

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 world

Atençã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 wORLD

Espaç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"))  # hello

center(), 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))    # -0007

Pesquisa 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"))       # 9

Ambos 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 ValueError

count()

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")))  # True

Isso 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.

python— editable, runs on the server

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.

python— editable, runs on the server

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"]))
# Python

Para 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étodoRetorna 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())  # True

Nota: 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.

python— editable, runs on the server

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.

python— editable, runs on the server

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étodoO 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

Prática

Prática
Which of the following Python string methods return -1 when the substring is not found (instead of raising an error)?
Which of the following Python string methods return -1 when the substring is not found (instead of raising an error)?
Was this page helpful?