Buscar e Substituir substring em String

Neste tutorial de nossa seção Strings em Python, vamos aprender como buscar e localizar uma substring dentro de uma string maior, e substituir, caso desejarmos, por outra substring.

Localizar no final da string: endswith( substring )

Usamos o método endswith() (do inglês 'termina com' ) para localizar uma substring (passada como argumento para o método) dentro de uma string maior, da seguinte maneira:
  • texto.endswith(substring)

Se a string substring estiver ao final da string texto, esse método retorna True.

Por exemplo, vamos criar um script que pede ao usuário o nome e extensão de um arquivo.
Se terminar com .txt, .pdf ou .png, dizemos se é um arquivo de texto, um PDF ou uma imagem.

while True:
 texto = input("Digite o nome de um arquivo com sua extensão:" )

 if texto.endswith('.txt'):
  print("É um arquivo de texto")
 elif texto.endswith('.pdf'):
  print("É um arquvido do Acrobat Reader")
 elif texto.endswith('.png'):
  print("É uma imagem")
 else:
  print("Outro tipo de arquivo")

Buscar no início da string: startswith(substring)

Analogamente, é possível verificar se alguma coisa está (uma string) está no começo, bem no início de outra string, através do método startswith (do inglês 'começa com'):
  • texto.startswith( substring )

Esse método retorna True se substring está no começo da string texto.

Por exemplo, vamos supor que você ficou encarregado de convocar todos os nomes 'Francisco' da escola ou empresa que trabalha. É muito simples, basta pegar todas as strings (de uma lista ou via readlines() de um arquivo) e usar:
  • texto.startswith('Francisco')

Prontinho, quem for Xico, vai ser identificado e devidamente selecionado com este simples e prático método.

Achar qualquer substring em qualquer lugar de uma string: find()

Se quisermos achar algo no começo, usamos startswith.
Se quisermos buscar algo no final, usamos endswith.
Se quisermos algo em qualquer local da string? Até mesmo no começo ou final, ou seja, não sabemos onde a substring pode estar?


No exemplo anterior: texto.startswith('Francisco')
Só selecionaria aqueles cujos nomes começam por Xico.

Mas e se o nome da criatura for José Francisco Silva ?
Não encontra!

Mas se usar: texto.find('Francisco')
Ela vai retornar o menor índice da primeira aparição dessa substring.
Se não encontrar, retorna -1.

Substituir substring por outra: replace()

Ok, aprendemos a encontrar qualquer string, em qualquer local de outra string.

Mas se ao invés de localizar, queiramos substituir?
Certamente você já usou o 'localizar e substituir' do Word.

Em Python, usamos o método replace, que recebe dois argumentos. Seja texto a string:
texto.replace(nova,antiga)

Ou seja, toda vez que achar a substring antiga ele vai colocar a substring nova, na string texto.
Esse método retorna uma nova string, com o texto substituto.

Exercício de substituição de string

"Você criou um software na sua escola, onde você pergunta a opinião dos alunos sobre a linguagem de programação Python e tem que apresentar esse texto pro dono da escola.

Porém, os alunos escrevem muito 'Pyton' ao invés de 'Python'. E também usam muito 'eh' ao invés de 'é'.

Crie um script pra você, que faça essas substituições."

O código, bem simples de ser entendido, é:

texto = input("O que acha do curso: " )
texto=texto.replace('Pyton','Python')
texto=texto.replace('eh','é')
print("Texto corrigido    :",texto)

Veja o resultado, que bacana:
Substituir substrings em strings

Agora você já pode criar um corretor automático de textos pra você :)

Nenhum comentário:

Postar um comentário