Trabalhando com Strings em Python: Guia Completo
Fundamentos das Strings na Linguagem Python
Strings em Python representam um tipo de dado fundamental para trabalhar com informações textuais. Compreender os princípios de manipulação de strings é essencial para uma programação eficiente.
Strings como objetos do tipo str
Em Python, strings são objetos do tipo embutido str. Elas representam sequências de caracteres Unicode. Cada string suporta diversos métodos nativos para processamento de texto. Strings permitem acesso a caracteres individuais por índice. Também possibilitam operações de comparação e ordenação.
texto = "Python"
print(type(texto)) # <class 'str'>
print(len(texto)) # 6
Princípio da Imutabilidade das Strings
Strings em Python são objetos imutáveis. Isso significa que qualquer operação de transformação cria uma nova string. A string original permanece inalterada. Esse princípio garante segurança dos dados e previsibilidade do código.
original = "olá"
modificada = original.upper()
print(original) # 'olá' - não foi alterada
print(modificada) # 'OLÁ' - nova string
Formas de Criar Strings
Python oferece várias maneiras de criar strings:
- Aspas simples para strings simples
- Aspas duplas para strings com apóstrofos
- Aspas triplas para texto multilinha
- Raw strings para escapar caracteres especiais
simples = 'string simples'
dupla = "string com 'apóstrofo'"
multilinha = """Primeira linha
Segunda linha
Terceira linha"""
raw = r"caminho\para\arquivo"
Indexação e Trabalho com Fatias (Slicing)
Acessando Caracteres da String
Cada caractere em uma string possui um índice. A indexação começa em zero. Python suporta tanto indexação positiva quanto negativa.
texto = "Python"
print(texto[0]) # 'P' - primeiro caractere
print(texto[5]) # 'n' - último caractere
print(texto[-1]) # 'n' - último via índice negativo
print(texto[-6]) # 'P' - primeiro via índice negativo
Criando Fatias (Slices) de Strings
Fatias permitem extrair substrings da string original. A sintaxe da fatia é: string[início:fim:passo]. O índice inicial é incluído, o final é excluído.
texto = "Python Programming"
print(texto[1:4]) # 'yth'
print(texto[:6]) # 'Python'
print(texto[7:]) # 'Programming'
print(texto[::2]) # 'Pto rgamn' - cada segundo caractere
print(texto[::-1]) # 'gnimmargorP nohtyP' - string invertida
Aplicação Prática da Indexação Negativa
A indexação negativa simplifica o trabalho com o final da string. Ela é especialmente útil ao processar arquivos e dados de comprimento variável.
arquivo = "documento.pdf"
extensao = arquivo[-4:] # '.pdf'
parte_nome = arquivo[:-4] # 'documento'
Métodos de Busca em Strings
Métodos Básicos de Busca de Substrings
O método find() retorna o índice da primeira ocorrência da substring. Se a substring não for encontrada, retorna -1. O método rfind() busca a partir do final da string.
texto = "banana programming"
print(texto.find("ana")) # 1
print(texto.find("python")) # -1 (não encontrado)
print(texto.rfind("ana")) # 3
print(texto.find("a", 2)) # 3 (busca a partir da posição 2)
Métodos de Busca Rigorosos com Exceções
Os métodos index() e rindex() funcionam de forma similar ao find(). No entanto, eles lançam uma exceção ValueError se a substring não for encontrada.
texto = "banana"
print(texto.index("n")) # 2
# print(texto.index("z")) # ValueError: substring not found