Strings em Python: manipulação de texto do zero
Domine strings em Python: fatiamento, métodos, f-strings e formatação.
O que são strings?
Strings são sequências de caracteres usadas para representar texto em Python. Você pode criar uma string usando aspas simples, aspas duplas ou aspas triplas. As três formas são válidas e produzem o mesmo resultado.
nome = "Maria"
sobrenome = 'Silva'
frase = """Isso tambem e uma string"""
print(type(nome)) # <class 'str'>
Strings em Python são imutáveis. Isso significa que, uma vez criada, você não pode alterar um caractere individual. Qualquer operação que modifique o texto na verdade cria uma nova string.
saudacao = "Ola"
# saudacao[0] = "o" # Isso causa erro!
saudacao = "ola" # Isso cria uma nova string
Acesso por índice e fatiamento
Cada caractere de uma string ocupa uma posição numerada a partir de zero. Você pode acessar caracteres individuais usando colchetes e também pode usar índices negativos, que contam a partir do final.
linguagem = "Python"
print(linguagem[0]) # P
print(linguagem[1]) # y
print(linguagem[-1]) # n
print(linguagem[-2]) # o
O fatiamento (slicing) permite extrair trechos da string usando a sintaxe [inicio:fim:passo]. O caractere na posição fim não é incluído no resultado.
texto = "Aprendendo Python"
print(texto[0:10]) # Aprendendo
print(texto[11:]) # Python
print(texto[:10]) # Aprendendo
print(texto[::2]) # Arned yhn
print(texto[::-1]) # nohtyP odnednerpA
O fatiamento com passo negativo é bastante útil para inverter strings, como no último exemplo acima.
Métodos úteis de string
Python oferece dezenas de métodos embutidos para manipular strings. Veja os mais utilizados no dia a dia.
Maiúsculas e minúsculas
nome = " maria silva "
print(nome.upper()) # " MARIA SILVA "
print(nome.lower()) # " maria silva "
print(nome.title()) # " Maria Silva "
print(nome.capitalize()) # " maria silva "
print(nome.strip()) # "maria silva"
O método strip() remove espaços em branco no início e no final da string. Existem também lstrip() e rstrip() para remover apenas de um lado.
Dividir e juntar
frase = "Python e uma linguagem poderosa"
palavras = frase.split()
print(palavras) # ['Python', 'e', 'uma', 'linguagem', 'poderosa']
csv_linha = "nome,idade,cidade"
campos = csv_linha.split(",")
print(campos) # ['nome', 'idade', 'cidade']
lista = ["Python", "Java", "JavaScript"]
resultado = " | ".join(lista)
print(resultado) # Python | Java | JavaScript
O split() sem argumento divide pelos espaços em branco. Quando você passa um separador, ele usa aquele caractere para fazer a divisão. O join() faz o caminho inverso: une uma lista de strings com um separador.
Buscar e substituir
texto = "Aprender Python e muito divertido"
print(texto.find("Python")) # 9
print(texto.find("Java")) # -1
print(texto.replace("Python", "programacao"))
# Aprender programacao e muito divertido
print(texto.startswith("Aprender")) # True
print(texto.endswith("divertido")) # True
print(texto.count("e")) # 2
O método find() retorna a posição da primeira ocorrência ou -1 se não encontrar. Já o replace() substitui todas as ocorrências do trecho indicado.
f-strings e formatação
A partir do Python 3.6, as f-strings se tornaram a forma mais prática e legível de formatar texto. Basta colocar um f antes das aspas e usar chaves para inserir expressões.
nome = "Carlos"
idade = 30
altura = 1.75
print(f"Nome: {nome}, Idade: {idade}")
print(f"Altura: {altura:.1f} metros")
print(f"Ano de nascimento: {2026 - idade}")
Você também pode alinhar e formatar números dentro das f-strings.
produto = "Teclado"
preco = 149.9
print(f"{produto:<20} R$ {preco:>8.2f}")
# Teclado R$ 149.90
for i in range(1, 4):
print(f"Item {i:03d}")
# Item 001
# Item 002
# Item 003
Strings multilinha
Para textos longos que ocupam várias linhas, use aspas triplas. Elas preservam as quebras de linha e a indentação exatamente como estão no código.
mensagem = """Prezado cliente,
Seu pedido foi confirmado com sucesso.
O prazo de entrega e de 5 dias uteis.
Atenciosamente,
Equipe de Vendas"""
print(mensagem)
Strings multilinha também são muito usadas como docstrings para documentar funções e classes.
Verificações com strings
Python oferece operadores e métodos para verificar o conteúdo de uma string sem precisar percorrê-la manualmente.
frase = "Python e incrivel"
print("Python" in frase) # True
print("Java" not in frase) # True
numero = "12345"
print(numero.isdigit()) # True
print(numero.isalpha()) # False
letras = "Python"
print(letras.isalpha()) # True
print(letras.isdigit()) # False
mistura = "Python3"
print(mistura.isalnum()) # True
O operador in verifica se uma substring existe dentro de outra string. Os métodos isdigit(), isalpha() e isalnum() verificam se todos os caracteres são dígitos, letras ou alfanuméricos, respectivamente.
Exemplo prático: formatador de CPF
Vamos criar uma função que recebe um CPF digitado apenas com números e devolve no formato padrão com pontos e traço.
def formatar_cpf(cpf):
cpf = cpf.strip().replace(".", "").replace("-", "")
if len(cpf) != 11:
return "CPF invalido: deve ter 11 digitos"
if not cpf.isdigit():
return "CPF invalido: deve conter apenas numeros"
cpf_formatado = f"{cpf[:3]}.{cpf[3:6]}.{cpf[6:9]}-{cpf[9:]}"
return cpf_formatado
# Testando a funcao
entradas = ["12345678901", "123.456.789-01", "1234", "abc12345678"]
for entrada in entradas:
resultado = formatar_cpf(entrada)
print(f"Entrada: {entrada:>20} -> {resultado}")
Esse exemplo combina vários conceitos do artigo: fatiamento, strip(), replace(), isdigit(), len() e f-strings. Com poucas linhas, temos uma função útil e fácil de entender.
Resumo
Strings são um dos tipos mais usados em Python e dominar sua manipulação é essencial para qualquer programador. Neste artigo você aprendeu a criar strings, acessar caracteres por índice, fatiar trechos, usar os principais métodos embutidos, formatar texto com f-strings e fazer verificações. Pratique combinando esses recursos em pequenos projetos e scripts do dia a dia.