Mandar um café pro programador

Pode me ajudar a transformar cafeína em código?

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ê :)

5 comentários:

  1. Olá, só gostaria de avisar que a definicao da funcao replace() está com os parametros inventidos.
    O correto, como está no exemplo, seria:

    string.replace(antiga, nova)

    Deve ter sido erro de digitacao.

    Obrigado pelo curso, estou tirando muito proveito.

    PS. Faltando alguns acentos e cedilha por causa do teclado utilizado.

    ResponderExcluir
  2. nomes = [" Paulo Ricardo ", " Fabio Junior ", " Roberto Carlos "]
    n = [nome.strip().split(' ')[0] for nome in nomes]
    print(n)
    Como formar nome através de uma inicial qualquer para informar qual é seu nome é mostrar na tela:a
    É mostrar qual o nome da pessoa em python.

    ResponderExcluir
  3. Alguém poderia me ajudar ? Não consegui

    Escreva um programa em Python que recebe uma string. O programa deve executar as seguintes
    operações:
    • Procurar pelas palavras feias: bobão, feia, doido e maluca
    ◦ Substituir todas as palavras feias por ****
    • Procurar pelas palavras bonitas: lindo, maravilhosa
    ◦ Colocar as palavras bonitas em caixa alta
    • Escrever a quantidade de palavras feias encontradas
    • Escrever a quantidade de palavras bonitas encontradas
    • Escrever o comprimento da string antes e após as modificações
    • Escrever a string antes e após as modificações

    ResponderExcluir

Bora fazer evoluir o ensino da Programação no Brasil ?

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo