Regex

Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #23364
    Profile photo ofnelsoncoliveirajrNelson
    Participante

    Boa tarde. Tenho um texto que gostaria de retirar/substituir de uma vez só algumas palavras que estão numa lista.

    Exemplo:

    texto_antes = “gostaria de solicitar um novo documento para o meu trabalho”

    lista = [“documento”, “trabalho”]

    texto_depois = “gostaria de solicitar um novo ###### para o meu #####”

    Tentei o re.sub e o replace, mas não consegui chegar no resultado esperado acima.

    Alguma dica de como conseguiria chegar no “texto_depois”?

    Obrigado.

    • Este tópico foi modificado 2 anos, 4 meses atrás por Profile photo ofnelsoncoliveirajrNelson.
    • Este tópico foi modificado 2 anos, 4 meses atrás por Profile photo ofnelsoncoliveirajrNelson.
    #23367

    Olá Nelson, boa noite!

    O método replace só substitui uma string por vez. E ele não faz substituições cumulativas. Ele sempre substitui a string original. Isso significa que se você tentar aplicar o método, ele faz isso

     

    ‘gostaria de solicitar um novo ##### para o meu trabalho’

    ‘gostaria de solicitar um novo documento para o meu ######’

     

    Pois o método não é cumulativo. Uma forma de fazer as duas substituições (e quantas mais você quiser) seria preencher uma lista e ir substituindo aos poucos

     

    texto_antes = 'gostaria de solicitar um novo documento para o meu trabalho'
    
    lista = ['documento', 'trabalho']
    
    
    substituidos = [texto_antes]
    
    for i in lista:
      substituto_mais_recente = substituidos[-1].replace(i,'#####')
      substituidos.append(substituto_mais_recente)
    
    texto_depois = substituidos[-1]
    
    print(texto_depois)
    

     

    Qualquer dúvida sobre como esse código acima funciona é só perguntar

    Espero ter ajudado

    #23371
    Profile photo ofnelsoncoliveirajrNelson
    Participante

    Excelente ! Funcionou. Muito obrigado !

Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Você deve fazer login para responder a este tópico.