Aula 08: Manipulação de Strings
Objetivos de Aprendizagem
Ao final desta aula, você deve ser capaz de:
- Acessar caracteres individuais de uma string por índice.
- Usar fatiamento (slicing) para extrair partes de uma string.
- Aplicar métodos de string para transformar e analisar texto.
- Formatar strings com f-strings de forma eficaz.
- Resolver problemas simples de processamento de texto.
Conteúdo
1) Indexação de strings
Cada caractere de uma string possui um índice numérico, começando em 0.
palavra = "Python"
# 012345
print(palavra[0]) # P
print(palavra[3]) # h
print(palavra[-1]) # n (último caractere)
print(palavra[-2]) # o (penúltimo)
Índices negativos contam a partir do final da string.
2) Fatiamento (slicing)
Fatiamento permite extrair substrings usando a notação [inicio:fim:passo].
texto = "algoritmo"
print(texto[0:4]) # algo (índices 0, 1, 2, 3)
print(texto[4:]) # ritmo (do índice 4 até o fim)
print(texto[:4]) # algo (do início até o índice 3)
print(texto[::2]) # agrtm (um a cada dois)
print(texto[::-1]) # omtirогла (string invertida)
Exemplo: verificar palíndromo
def palindromo(palavra):
return palavra == palavra[::-1]
print(palindromo("arara")) # True
print(palindromo("python")) # False
3) Comprimento e iteração
nome = "Carolina"
print(len(nome)) # 8
for letra in nome:
print(letra)
4) Métodos de string
Python oferece diversos métodos embutidos para manipular strings.
Transformação de case
texto = "Olá, Mundo!"
print(texto.upper()) # OLÁ, MUNDO!
print(texto.lower()) # olá, mundo!
print(texto.capitalize()) # Olá, mundo!
print(texto.title()) # Olá, Mundo!
Remoção de espaços
entrada = " dado com espaços "
print(entrada.strip()) # "dado com espaços"
print(entrada.lstrip()) # "dado com espaços "
print(entrada.rstrip()) # " dado com espaços"
Substituição e busca
frase = "Eu gosto de café e café me faz bem"
print(frase.replace("café", "chá"))
# Eu gosto de chá e chá me faz bem
print(frase.count("café")) # 2
print(frase.find("café")) # 14 (índice da 1ª ocorrência)
print("café" in frase) # True
Divisão e junção
csv = "Alice,Bob,Carol,Diana"
nomes = csv.split(",")
print(nomes) # ['Alice', 'Bob', 'Carol', 'Diana']
reunido = " - ".join(nomes)
print(reunido) # Alice - Bob - Carol - Diana
Verificações booleanas
print("abc".isalpha()) # True (apenas letras)
print("123".isdigit()) # True (apenas dígitos)
print("abc123".isalnum()) # True (letras e/ou dígitos)
print(" ".isspace()) # True (apenas espaços)
print("Hello".startswith("He")) # True
print("Hello".endswith("lo")) # True
5) Formatação com f-strings
f-strings permitem inserir expressões Python diretamente em strings.
nome = "Ana"
nota = 8.756
print(f"Aluna: {nome}")
print(f"Nota: {nota:.2f}") # 2 casas decimais
print(f"Nota: {nota:.0f}") # sem casas decimais
print(f"Largura fixa: {nome:>10}") # alinhado à direita em 10 chars
print(f"Em maiúsculas: {nome.upper()}")
Saída esperada:
Aluna: Ana
Nota: 8.76
Nota: 9
Largura fixa: Ana
Em maiúsculas: ANA
6) Exemplos contextualizados
Exemplo A: formatar nome completo
def formatar_nome(nome_completo):
partes = nome_completo.strip().split()
return " ".join(parte.capitalize() for parte in partes)
print(formatar_nome(" joÃO dA siLVA "))
Saída esperada: João Da Silva
Exemplo B: validar e-mail simples
def email_valido(email):
return "@" in email and email.endswith(".com") or email.endswith(".br")
print(email_valido("aluno@escola.com.br")) # True
print(email_valido("nao-e-email")) # False
Exemplo C: contar vogais
def contar_vogais(texto):
vogais = "aeiouáéíóúãõâêîôûàèìòù"
return sum(1 for c in texto.lower() if c in vogais)
print(contar_vogais("Programação")) # 5
Exercícios (checkpoints)
- Dado a string
"Algoritmos e Programação", imprima o primeiro e o último caractere.- Critério de verificação: deve imprimir
Aeo.
- Critério de verificação: deve imprimir
- Escreva uma função
inverter(texto)que retorna o texto invertido usando slicing.- Critério de verificação:
inverter("Python")deve retornar"nohtyP".
- Critério de verificação:
- Use
.split()e.join()para substituir espaços por hífens em uma frase.- Critério de verificação:
"olá mundo"deve se tornar"olá-mundo".
- Critério de verificação:
- Crie uma função
normalizar(texto)que remove espaços das bordas e coloca tudo em minúsculas.- Critério de verificação:
normalizar(" OLÁ ")deve retornar"olá".
- Critério de verificação:
- Verifique se uma palavra digitada pelo usuário é um palíndromo.
- Critério de verificação:
"arara"deve exibir mensagem de palíndromo;"casa"não.
- Critério de verificação:
- Formate um relatório simples com f-string: nome, média e situação (Aprovado/Reprovado, com média >= 6).
- Critério de verificação: para nome
"Carlos"e média7.5, deve exibirCarlos | 7.50 | Aprovado.
- Critério de verificação: para nome
Referências
Principais
- Python Docs — Text Sequence Type: https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str
- Python Docs — String Methods: https://docs.python.org/3/library/stdtypes.html#string-methods
- Python Docs — f-strings: https://docs.python.org/3/reference/lexical_analysis.html#formatted-string-literals
Aprofundamento
- Real Python — Python String Formatting: https://realpython.com/python-string-formatting/
- Real Python — Python Strings and Character Data: https://realpython.com/python-strings/