Pular para o conteúdo
Editor

Métodos de string em Python: todos explicados com exemplos

Iniciante25 min6 exercícios100 XP

Este tutorial foi traduzido do original em inglês.Read in EnglishLeer en españolЧитать на русскомอ่านภาษาไทยAvisar sobre um erro de tradução

0/6 exercícios

As strings em Python vêm com uma caixa de ferramentas de métodos embutidos. Esses métodos permitem trocar entre maiúsculas e minúsculas, remover espaços sobrando, procurar palavras, dividir textos e muito mais.

Pense nos métodos de string como os aplicativos do seu celular. Cada um faz um trabalho específico. Você não precisa decorar todos agora: é suficiente saber que eles existem, para escolher o certo quando precisar.

Neste tutorial você vai conhecer todos os principais métodos de string, com exemplos ao vivo que você pode executar e modificar. No final, você vai conseguir limpar, pesquisar, dividir e transformar qualquer texto que aparecer no seu caminho.

Como converter strings para maiúsculas em Python

O Python oferece cinco métodos para mudar a caixa (maiúsculas e minúsculas) de uma string. Os dois mais usados são upper() e lower().

Os cinco métodos de caixa
greeting = "hello, world!"
print(greeting.upper()) # HELLO, WORLD!
print(greeting.lower()) # hello, world!
print(greeting.title()) # Hello, World!
print(greeting.capitalize()) # Hello, world!
print(greeting.swapcase()) # HELLO, WORLD!
Saída
HELLO, WORLD!
hello, world!
Hello, World!
Hello, world!
HELLO, WORLD!

upper() converte todas as letras para maiúsculas. lower() converte todas as letras para minúsculas. Esses dois são os que você vai usar com mais frequência.

title() coloca em maiúscula a primeira letra de cada palavra, como no título de um livro em inglês. capitalize() coloca em maiúscula só a primeira letra da string e deixa todo o resto em minúsculas.

swapcase() inverte todas as letras: maiúsculas viram minúsculas e vice-versa. Não é muito comum, mas é útil quando você precisa.

Uso prático dos métodos de caixa
# Real-world use: case-insensitive comparison
user_input = "Yes"
# Without lower(), "Yes" != "yes" and your check fails
if user_input.lower() == "yes":
print("User said yes!")
# title() is great for formatting names
full_name = "ada lovelace"
print(full_name.title()) # Ada Lovelace
Saída
User said yes!
Ada Lovelace

Como remover espaços em branco de strings em Python

Espaços extras e caracteres invisíveis aparecem nas strings o tempo todo: na entrada do usuário, na leitura de arquivos ou ao copiar e colar. A família strip() do Python resolve isso muito bem.

strip(), lstrip() e rstrip()
messy = " hello, world! "
print(repr(messy)) # ' hello, world! '
print(repr(messy.strip())) # 'hello, world!'
print(repr(messy.lstrip())) # 'hello, world! '
print(repr(messy.rstrip())) # ' hello, world!'
Saída
'   hello, world!   '
'hello, world!'
'hello, world!   '
'   hello, world!'

strip() remove os espaços em branco das duas pontas de uma string. Pense nisso como tirar a casca dos dois lados de um pão de forma.

lstrip() corta só o lado esquerdo. rstrip() corta só o lado direito. O "l" e o "r" vêm de "left" (esquerda) e "right" (direita).

Usamos repr() no exemplo para você conseguir enxergar os espaços. Normalmente, o print() esconderia os espaços no final.

Removendo caracteres específicos
# You can also strip specific characters
filename = "###report.txt###"
print(filename.strip("#")) # report.txt
url = "https://example.com/"
print(url.rstrip("/")) # https://example.com
Saída
report.txt
https://example.com

Como procurar texto dentro de uma string em Python

O Python oferece várias formas de procurar um texto dentro de uma string. As mais importantes são find(), count(), startswith() e endswith().

Como usar find() e index() em Python

find() informa onde uma substring aparece pela primeira vez. Ele retorna o índice (o número da posição) da primeira ocorrência, contando a partir de 0.

find() retorna a posição de uma substring
sentence = "I love Python programming"
print(sentence.find("Python")) # 7 (starts at position 7)
print(sentence.find("love")) # 2
print(sentence.find("Java")) # -1 (not found)
print(sentence.find("o")) # 3 (first occurrence)
print(sentence.find("o", 4)) # 11 (search starting from position 4)
Saída
7
2
-1
3
11

Quando find() não encontra a substring, ele retorna -1. É o jeito dele de dizer "não encontrei".

index() faz o mesmo trabalho que find(), com uma diferença importante: se a substring não for encontrada, ele lança um ValueError em vez de retornar -1.

find(): retorna -1 se não encontrar
text = "hello world"
result = text.find("xyz")
print(result)  # -1 (safe, no crash)
index(): lança um erro se não encontrar
text = "hello world"
# result = text.index("xyz")
# ValueError: substring not found

# Use index() only when you're SURE
# the substring exists
result = text.index("world")
print(result)  # 6

Como contar ocorrências em uma string com count()

count() informa quantas vezes uma substring aparece na string. Ele diferencia maiúsculas de minúsculas, então "The" e "the" são contados separadamente.

count() conta as ocorrências de uma substring
text = "the cat sat on the mat by the hat"
print(text.count("the")) # 3
print(text.count("at")) # 4 (cat, sat, mat, hat)
print(text.count("dog")) # 0
print(text.count("The")) # 0 (case-sensitive!)
Saída
3
4
0
0

Como verificar o início e o fim de uma string em Python

startswith() e endswith() retornam True ou False. Eles são perfeitos para verificar extensões de arquivo, prefixos de URL ou qualquer padrão nas pontas de uma string.

startswith() e endswith()
filename = "report_2024.pdf"
print(filename.startswith("report")) # True
print(filename.endswith(".pdf")) # True
print(filename.endswith(".txt")) # False
# Check multiple options with a tuple
print(filename.endswith((".pdf", ".docx", ".txt"))) # True
Saída
True
True
False
True

Como substituir texto em uma string em Python

replace() troca todas as ocorrências de uma substring por outra. É como o recurso de localizar e substituir de um editor de texto.

replace() troca substrings
message = "I like cats. Cats are great. I have two cats."
# Replace all occurrences
print(message.replace("cats", "dogs"))
# I like dogs. Cats are great. I have two dogs.
# Notice "Cats" (capital C) was NOT replaced -- case matters!
# Limit replacements with the third argument
print(message.replace("cats", "dogs", 1))
# I like dogs. Cats are great. I have two cats.
Saída
I like dogs. Cats are great. I have two dogs.
I like dogs. Cats are great. I have two cats.

O terceiro argumento é opcional. Ele limita quantas substituições acontecem. Sem ele, replace() troca todas as ocorrências que encontrar.

Lembre-se: replace() diferencia maiúsculas de minúsculas. "cats" e "Cats" são tratadas como substrings diferentes.

Como dividir uma string em Python

split() corta uma string em uma lista de strings menores. Por padrão, ele divide em qualquer espaço em branco (espaços, tabulações, quebras de linha).

split() transforma strings em listas
sentence = "Python is easy to learn"
words = sentence.split()
print(words) # ['Python', 'is', 'easy', 'to', 'learn']
# Split on a specific character
csv_line = "Alice,25,New York,Engineer"
values = csv_line.split(",")
print(values) # ['Alice', '25', 'New York', 'Engineer']
# Split with a limit
first, rest = "John Smith Jr.".split(" ", 1)
print(first) # John
print(rest) # Smith Jr.
Saída
['Python', 'is', 'easy', 'to', 'learn']
['Alice', '25', 'New York', 'Engineer']
John
Smith Jr.

O primeiro argumento é o delimitador: o caractere (ou a string) onde a divisão acontece. O segundo argumento limita o número de divisões.

rsplit() funciona do mesmo jeito, mas divide a partir da direita. Isso faz diferença quando você usa um limite.

rsplit() divide a partir da direita
path = "home/user/documents/report.txt"
# split from the left
print(path.split("/", 1)) # ['home', 'user/documents/report.txt']
# rsplit from the right
print(path.rsplit("/", 1)) # ['home/user/documents', 'report.txt']
Saída
['home', 'user/documents/report.txt']
['home/user/documents', 'report.txt']

Como juntar uma lista em uma string em Python

join() é o inverso de split(). Ele recebe uma lista de strings e cola todas elas com um separador. O separador é a string em que você chama o join().

join() cola strings
words = ["Python", "is", "awesome"]
sentence = " ".join(words)
print(sentence) # Python is awesome
# Use any separator you want
print("-".join(words)) # Python-is-awesome
print(", ".join(words)) # Python, is, awesome
print("\n".join(words)) # Each word on its own line
Saída
Python is awesome
Python-is-awesome
Python, is, awesome
Python
is
awesome

A sintaxe parece invertida no começo: separator.join(list). Leia assim: "use este separador para juntar aquela lista".

Um padrão comum é dividir uma string, modificar os pedaços e juntar tudo de novo.

Dividir, modificar e juntar de novo
# Uppercase every word, then rejoin
sentence = "python is easy to learn"
words = sentence.split()
capitalized = [word.upper() for word in words]
result = " ".join(capitalized)
print(result) # PYTHON IS EASY TO LEARN
# Build a CSV line from data
fields = ["Alice", "25", "New York"]
csv_line = ",".join(fields)
print(csv_line) # Alice,25,New York
Saída
PYTHON IS EASY TO LEARN
Alice,25,New York

Como verificar o conteúdo de uma string em Python

O Python tem uma família de métodos is____() que retornam True ou False conforme o que a string contém. Eles são ótimos para validar a entrada do usuário.

isalpha(), isdigit(), isalnum() e isspace()
print("hello".isalpha()) # True (only letters)
print("hello1".isalpha()) # False (contains a digit)
print("12345".isdigit()) # True (only digits)
print("12.5".isdigit()) # False (dot is not a digit)
print("hello1".isalnum()) # True (letters and digits only)
print("hello!".isalnum()) # False (! is not alphanumeric)
print(" ".isspace()) # True (only whitespace)
print(" hi ".isspace()) # False (contains letters)
Saída
True
False
True
False
True
False
True
False

isalpha() verifica se há só letras. isdigit() verifica se há só dígitos. isalnum() verifica se há só letras ou dígitos (alfanumérico). isspace() verifica se há só espaços em branco.

Todos esses métodos retornam False para strings vazias. Uma string vazia não tem nenhum caractere para testar, então nada passa na verificação.

Usando os métodos de verificação para validar
# Practical example: validate a username
username = "player42"
if username.isalnum():
print(f"\"{username}\" is a valid username")
else:
print(f"\"{username}\" contains invalid characters")
# Check if user typed a number
user_input = "42"
if user_input.isdigit():
number = int(user_input)
print(f"You entered the number {number}")
else:
print("That's not a valid number")
Saída
"player42" is a valid username
You entered the number 42

Como preencher e alinhar strings em Python

Às vezes você precisa que um texto tenha uma largura fixa: em tabelas, recibos ou numa saída organizada no terminal. Os métodos de preenchimento do Python adicionam caracteres para completar o espaço.

center(), ljust(), rjust() e zfill()
word = "hi"
print(word.center(10)) # " hi "
print(word.center(10, "-")) # "----hi----"
print(word.ljust(10, ".")) # "hi........"
print(word.rjust(10, ".")) # "........hi"
# zfill() pads with zeros on the left
print("42".zfill(5)) # 00042
print("7".zfill(3)) # 007
Saída
    hi    
----hi----
hi........
........hi
00042
007

center() centraliza a string dentro da largura indicada. ljust() alinha à esquerda e preenche à direita. rjust() alinha à direita e preenche à esquerda.

zfill() é um atalho para preencher números com zeros à esquerda. É perfeito para números de pedido, registros de horário ou nomes de arquivo como image_007.png.

Montando uma tabela formatada
# Build a neat table
print("Item".ljust(15) + "Price".rjust(8))
print("-" * 23)
print("Coffee".ljust(15) + "$4.50".rjust(8))
print("Sandwich".ljust(15) + "$8.99".rjust(8))
print("Cookie".ljust(15) + "$2.25".rjust(8))
print("-" * 23)
print("Total".ljust(15) + "$15.74".rjust(8))
Saída
Item              Price
-----------------------
Coffee            $4.50
Sandwich          $8.99
Cookie            $2.25
-----------------------
Total            $15.74

Como encadear métodos de string em Python

Como todo método de string retorna uma string nova, você pode chamar outro método sobre o resultado. Isso se chama encadeamento de métodos.

Encadeando métodos
user_input = " Hello, World! "
# Chain multiple methods together
cleaned = user_input.strip().lower().replace(",", "")
print(cleaned) # hello world!
# Same thing step by step:
step1 = user_input.strip() # "Hello, World!"
step2 = step1.lower() # "hello, world!"
step3 = step2.replace(",", "") # "hello world!"
print(step3) # hello world!
Saída
hello world!
hello world!

Leia as cadeias da esquerda para a direita: primeiro strip, depois lower, depois replace. Cada método trabalha sobre o resultado do anterior.


Exercícios práticos

Hora de colocar esses métodos de string para trabalhar! Cada exercício foca em um grupo diferente de métodos que você acabou de aprender.

Exercício 1: limpar a entrada do usuário
Escreva o código

Você tem uma string bagunçada guardada na variável user_input. Ela tem espaços extras dos dois lados e letras maiúsculas aleatórias.

Limpe a string:

1. Removendo os espaços em branco das duas pontas

2. Convertendo tudo para minúsculas

Exiba o resultado limpo. A saída deve ser:

hello python
user_input = " HeLLo PyThOn "
# Clean up the input and print it
Exercício 2: contar ocorrências de uma palavra
Escreva o código

Conte quantas vezes a palavra "the" aparece na frase abaixo. Use o método count().

Exiba o resultado exatamente neste formato:

the appears 4 times

Dica: converta para minúsculas primeiro, para contar tanto "the" quanto "The".

sentence = "The cat sat on the mat by the door and The dog watched"
# Count how many times "the" appears and print it
Exercício 3: substituir todas as ocorrências
Escreva o código

Substitua todas as ocorrências de "JavaScript" por "Python" na frase abaixo e exiba o resultado.

Saída esperada:

I love Python. Python is great. Learning Python is fun.
sentence = "I love JavaScript. JavaScript is great. Learning JavaScript is fun."
# Replace JavaScript with Python and print it
Exercício 4: dividir uma linha de CSV
Escreva o código

Você tem uma linha de valores separados por vírgula. Divida a linha em valores individuais e exiba cada um em uma linha própria.

Saída esperada:

Alice
25
New York
Engineer
csv_line = "Alice,25,New York,Engineer"
# Split the line by commas and print each value
Exercício 5: corrija o bug: find() ou index()
Corrija o erro

Este código tenta encontrar a posição de "Python" em uma frase. Ele funciona quando a palavra existe, mas quebra quando ela não existe.

Corrija o código para que ele:

  • Exiba a posição quando a palavra for encontrada
  • Exiba "Word not found" quando a palavra não estiver na frase
  • Saída esperada:

    Found at position 7
    Word not found

    Dica: o bug é que index() quebra quando a palavra não existe. Qual método retorna -1 em vez de quebrar?

    sentence = "I love Python programming"
    # Find "Python" -- this line works fine
    pos = sentence.index("Python")
    print(f"Found at position {pos}")
    # Find "Java" -- this line crashes!
    pos = sentence.index("Java")
    if pos >= 0:
    print(f"Found at position {pos}")
    else:
    print("Word not found")
    Exercício 6: validar um nome de usuário
    Escreva o código

    Escreva um programa que valide um nome de usuário de acordo com estas regras:

  • Deve ser alfanumérico (só letras e números)
  • Deve ter entre 3 e 15 caracteres
  • Três nomes de usuário foram fornecidos. Para cada um, exiba "Valid" se ele passar nas duas regras, ou "Invalid" se falhar em alguma delas.

    Saída esperada:

    player42: Valid
    ab: Invalid
    hello world!: Invalid
    usernames = ["player42", "ab", "hello world!"]
    # Check each username and print if it's valid or invalid

    Resumo: guia rápido dos métodos de string em Python

    Aqui está uma referência rápida de todos os métodos vistos neste tutorial:

    MétodoO que fazExemplo
    upper()Tudo em maiúsculas"hi".upper() → "HI"
    lower()Tudo em minúsculas"HI".lower() → "hi"
    title()Maiúscula no início de cada palavra"hi there".title() → "Hi There"
    capitalize()Maiúscula só na primeira letra"hi there".capitalize() → "Hi there"
    strip()Remove espaços das pontas" hi ".strip() → "hi"
    find()Posição da substring (-1 se não existir)"hello".find("ll") → 2
    count()Conta ocorrências"banana".count("a") → 3
    startswith()Verifica o início"hello".startswith("he") → True
    endswith()Verifica o final"file.py".endswith(".py") → True
    replace()Troca substrings"hi".replace("hi", "bye") → "bye"
    split()Divide em uma lista"a,b,c".split(",") → ["a","b","c"]
    join()Junta uma lista",".join(["a","b"]) → "a,b"
    isdigit()Só dígitos?"123".isdigit() → True
    isalpha()Só letras?"abc".isalpha() → True
    isalnum()Letras ou dígitos?"abc1".isalnum() → True
    zfill()Preenche com zeros"42".zfill(5) → "00042"

    Você não precisa decorar esta tabela. O importante é saber que esses métodos existem, para poder consultá-los quando precisar.

    O que vem a seguir?

    No próximo tutorial, Formatação de strings em Python, você vai aprender a controlar exatamente como os valores aparecem dentro das strings. Você vai dominar a formatação com f-strings, o alinhamento, a formatação de números e muito mais.

    Tutoriais relacionados

    Este tutorial foi útil?