Skip to content

Substituição de Texto em Python: Usando replace e Regex

    texto

    Substituir texto em strings é uma tarefa comum na programação Python. Neste artigo, vamos explorar diferentes maneiras de realizar substituições de texto, desde as simples até as mais avançadas, usando métodos integrados e expressões regulares.

    1) Substituição Básica: Trocando um Caractere por Outro (replace simples)

    Às vezes, tudo o que você precisa é substituir um caractere por outro em uma string. Você pode fazer isso usando o método .replace. Por exemplo:

    texto_antigo = "apple"
    novo_texto = texto_antigo.replace("a", "b")
    # novo_texto é "bpple"

    Neste caso, estamos substituindo todos os “a” por “b” no texto.

    2) Substituições Múltiplas: Trocando Vários Caracteres (replace repetido)

    Se precisarmos fazer várias substituições em uma única string, podemos encadear várias chamadas do método .replace. Por exemplo:

    texto_antigo = "apple juice"
    novo_texto = texto_antigo.replace("a", "@").replace("e", "3")
    # novo_texto é "@ppl3 juic3"

    Dessa forma, substituímos “a” por “@” e “e” por “3”.

    3) Usando Expressões Regulares: Substituindo com Flexibilidade (re.sub)

    As expressões regulares (regex) oferecem uma maneira poderosa de fazer substituições flexíveis em texto. Por exemplo, se quisermos remover todas as pontuações de uma string:

    import re
    
    texto_antigo = "hello!!??! my name is rocky!.!,!"
    novo_texto = re.sub("[!?.,]", "", texto_antigo)
    # novo_texto é "hello my name is rocky"

    Neste exemplo, a expressão [!?.,] corresponde a qualquer pontuação dentro dos colchetes. O método re.sub substitui todas as correspondências por uma string vazia.

    4) Usando Expressões Regulares: Substituições Personalizadas (re.sub)

    Às vezes, você deseja substituir várias correspondências por diferentes strings. Usando expressões regulares, isso é possível. Por exemplo, podemos duplicar todas as vogais em uma string:

    import re
    
    texto_antigo = "apple orange pear"
    novo_texto = re.sub("([aeiou])", r"\1\1", texto_antigo)
    # novo_texto é "aapplee ooraangee peeaar"

    Neste caso, usamos um grupo de captura ( ) em torno das vogais ([aeiou]) e depois usamos \1\1 na string de substituição para duplicar cada vogal.

    Estudo de Caso: Substituindo Emojis por HTML

    Imagine que temos uma string com emojis no formato :emoji: e queremos substituí-los por código HTML. Primeiro, precisamos criar uma regex para encontrar os emojis no formato :emoji::

    import re
    
    texto = "hello :smile: my name is rocky :wave:"
    emojis_encontrados = re.findall(":(.*?):", texto)
    # emojis_encontrados é ["smile", "wave"]

    Após verificar que nossa regex funciona corretamente, podemos usar re.sub para realizar a substituição:

    import re
    
    texto = "hello :smile: my name is rocky :wave:"
    novo_texto = re.sub(":(.*?):", "<i class=\"\\1\"/>", texto)
    # novo_texto é "hello <i class="smile"/> my name is rocky <i class="wave"/>"

    Regex vs. replace: Qual Escolher?

    Ao decidir entre usar regex e o método .replace para substituições múltiplas, considere a eficiência. O re.sub é mais eficiente, pois percorre a string apenas uma vez, enquanto o .replace precisa percorrer a string várias vezes.

    Portanto, o vencedor é o re.sub quando você precisa fazer muitas substituições em uma única string.

    Em resumo, dominar as técnicas de substituição de texto em Python, seja com métodos integrados ou expressões regulares, amplia suas habilidades de manipulação de strings e torna seu código mais eficiente. Escolha a abordagem que melhor se adapte às suas necessidades e mantenha-se flexível em suas implementações.

    Outras Referências

    Introdução ao Pip: Instalando Bibliotecas Python de Terceiros

    Documentação oficial de Regex em Python: https://docs.python.org/3/library/re.html

    Tags:

    Leave a Reply

    Your email address will not be published. Required fields are marked *