Python replace: substituindo substrings em uma string!

Quando falamos em Python, o Python replace() pertence ao conjunto de métodos disponíveis na linguagem e é utilizado para a manipulação de variáveis do tipo string. Sua utilização é essencial para trocar uma ou mais trechos de seu conteúdo e o resultado é disponibilizado em uma nova string.

Trata-se de um recurso útil para diversas finalidades, como para modificar pontuações, substituir palavras ou frases e muito mais. Também podemos trabalhar com expressões regulares por meio da importação de módulos da linguagem. Então, para demonstrar como esse recurso funciona, preparamos este post com os seguintes tópicos:

  • Python replace: o que é e para que serve esse método?
  • Qual é a sintaxe desse método?
  • Exemplos de uso do método replace
  • Como substituir trechos de uma string utilizando expressões regulares?

Continue com a gente e boa leitura!

Python replace: o que é e para que serve esse método?

O método replace() é utilizado para substituir um ou mais trechos em uma string. Ele contém parâmetros para auxiliar a forma de substituição desse conteúdo. Em Python, o tipo string é imutável, o que significa que quando ela é declarada, não é possível realizar alterações em seu conteúdo.

Em função disso, sempre que um método de manipulação de string é executado, entre eles a função replace(), o resultado é gerado em uma nova variável — que, nesse caso, também é do tipo string.

Qual é a sintaxe desse método?

O método replace() contém dois parâmetros obrigatórios e um opcional, falaremos sobre cada um mais adiante. Sua sintaxe é:

string.replace(oldvalue, newvalue, count)

Conheça os parâmetros do método replace

Como mencionamos, o método replace() é utilizado para substituir uma ou mais ocorrências de um determinado conteúdo em uma string. Para isso, precisamos informar quais são esses valores por meio de parâmetros da função. Confira como funciona cada um deles, a seguir.

Oldvalue

O parâmetro oldvalue corresponde ao valor original que será substituído na string. Na prática, o compilador percorrerá toda a string e, quando encontrar a substring correspondente, vai substituí-la pelo conteúdo informado em newvalue. Portanto, esse é um parâmetro obrigatório. Veja um exemplo:

frase = "Linguagens de programação: Python, C, Java, JavaScript."
print(frase.replace(",", " -"))

#Resultado: Linguagens de programação: Python - C - Java - JavaScript.

No exemplo acima, toda a ocorrência do caractere vírgula na string “frase” será substituído pelos caracteres de espaço e hífen.

Newvalue

O parâmetro newvalue trabalha em conjunto com o oldvalue. Na prática, é ele que informa ao compilador qual será o novo conteúdo inserido no trecho da string definido no parâmetro oldvalue. Perceba que, no exemplo anterior, todas as vírgulas foram substituídas pelo novo valor: “ –“.

Count

O parâmetro count é opcional e indica quantas vezes será feita a substituição da substring definida. Veja um código de exemplo:

frase = "Linguagens de programação: Python, C, Ruby, JavaScript."
print(frase.replace(",", " -",2))

#Resultado: Linguagens de programação: Python - C - Ruby, JavaScript.

Perceba que definimos o valor de count igual a 2. Assim, a vírgula foi substituída pela substring indicada apenas nas duas primeiras ocorrências e se manteve entre as linguagens Ruby e JavaScript. É importante dizer que, se o parâmetro count for omitido ao chamar a função replace(), todas as ocorrências da substring serão substituídas pelo valor correspondente.

Exemplos de uso do método replace

Agora que já vimos a parte teórica do método replace(), vamos desenvolver alguns exemplos práticos para demonstrar como esse recurso funciona.

Remover quebras de linhas em uma string

Uma forma de utilização do método replace() é para a remoção dos caracteres correspondentes à quebra de linha “\n”. Nesse caso, podemos substituir essa ocorrência por um caractere de espaço. Veja um exemplo:

linguagens="Python\nJavaScript\nC\nRuby"
print(linguagens.replace("\n", ", "))

#Resultado: Python, JavaScript, C, Ruby

No exemplo acima, substituímos a ocorrência da quebra de linha pelos caracteres de vírgula e espaço.

Alterar um determinado trecho da string

Podemos utilizar a função replace() para modificar apenas uma determinada palavra em uma string. No exemplo abaixo, trocamos a linguagem C por Rust. Veja o algoritmo:

frase= "Linguagens de programação: Python, C, Ruby, JavaScript."
print(frase.replace("C", "Rust"))

#Resultado: Linguagens de programação: Python, Rust, Ruby, JavaScript.

Alterar várias ocorrências de uma substring

Como mencionamos, podemos definir o número de vezes que determinada substring será alterada. Para isso, utilizamos o parâmetro count no método replace(). Veja um exemplo:

numeros = "um dois três quatro cinco"
print(numeros.replace(" ", "\n", 3))

'''
Resultado:
um
dois
três
quatro cinco
'''

No código fonte acima, trocamos o caractere de espaço pelo de nova linha apenas em 3 ocorrências. Por isso, o conteúdo “quatro cinco” foi exibido em uma mesma linha.

Como substituir trechos de uma string utilizando expressões regulares?

O método replace() só pode ser utilizado com um parâmetro de seleção. Isso significa que se quisermos, por exemplo, localizar em uma string a ocorrência do caractere dois pontos e também da vírgula, não será possível com esse recurso. Entretanto, podemos utilizar expressões regulares para nos ajudar nessa tarefa.

Vale ressaltar que as expressões regulares correspondem a um recurso muito utilizado em diversas linguagens de programação. Não entraremos em detalhes sobre sua elaboração, pois temos este guia inicial com dicas valiosas sobre o assunto, que você pode conferir mais tarde.

Para utilizar expressões regulares — Python regex replace — para substituir partes de uma string, precisamos utilizar o módulo re, que é uma abreviatura de regular expression. Na prática, esse módulo contém uma série de métodos que possibilitam a utilização de expressões regulares com diferentes tipos de dados, entre eles, a string.

Portanto, para substituir um determinado trecho de uma string devemos usar o método re.sub() que tem a seguinte sintaxe:

re.sub(pattern, replacement, string, count, flags)

Em que:

  • pattern: representa uma expressão regular capaz de identificar determinada substring na variável de origem;
  • replacement: representa a substring que será substituída ou uma função que retorne uma string;
  • string: indica a string original;
  • count: indica o número de repetições, ou seja, de possíveis substituições caso exista o valor correspondente na string. Esse parâmetro é opcional;
  • flags: também é um parâmetro opcional e representa os sinalizadores de expressões regulares. Por padrão, nenhum valor é aplicado. Entretanto, podemos utilizar, por exemplo, a flag = re.I, que equivale à instrução re.IGNORECASE. Assim, não será feita distinção entre letras maiúsculas ou minúsculas.

Nada melhor que conferir alguns exemplos práticos para visualizarmos como esse recurso funciona e sua diferença em relação ao método replace(). Vamos lá!

Alterar partes do endereço de e-mail

Podemos utilizar o método re.sub() com uma expressão regular para alterar uma parte do endereço de e-mail. Veja o exemplo abaixo:

import re

email = 'joaopedro[email protected] [email protected] [email protected] [email protected]'
resultado = re.sub(r'@(\w*)(.\w{2,3})', '@novodominio.com.br', email)
print(resultado)

'''
Resultado:
[email protected] [email protected] [email protected] [email protected]
'''

Perceba que logo na primeira linha de código realizamos a importação do módulo re, pois ele é essencial para que o método re.sub() funcione. A seguir, temos a variável “email” que contém alguns endereços separados por espaços e com domínios diferentes.

Na sequência, criamos a variável resultado para armazenar o retorno da função re.sub(). Veja que utilizamos uma expressão regular para selecionar o trecho do e-mail após o caractere “@”. Dessa forma, podemos substituir esse trecho pelo novo valor, que corresponde a “@novodominio.com.br”.

Por fim, exibimos o resultado na tela com todos os endereços modificados para o domínio definido na função re.sub(). Vale ressaltar que, antes de escrevermos a expressão regular, utilizamos o caractere ‘r’ —que representa uma string bruta.

Isso é necessário para garantir que a expressão será lida da forma em que foi escrita, pois a linguagem Python interpreta a barra invertida “\” e o caractere seguinte como especiais, podendo ser uma nova linha, tabulação etc. Isso pode gerar alguma confusão na interpretação da instrução.

Alterar substring a partir de duas alternativas

Se tivermos uma string em que desejamos utilizar duas ou mais substrings para a seleção do trecho a ser alterado, podemos aplicar o método re.sub() para facilitar essa tarefa. Veja o exemplo abaixo:

import re

linguagem= "Linguagens de programação: Python, C, Ruby, JavaScript."
print(re.sub(r':|,', ' -', linguagem))

#Resultado: Linguagens de programação - Python - C - Ruby - JavaScript.

No exemplo acima queremos substituir dois caracteres: o dois pontos e a vírgula pelos caracteres de espaço e hífen. Perceba que no método re.sub() utilizamos a expressão ‘:|,’, ou seja, usamos o operador “|” (ou) para dizer ao compilador que ele deve substituir a substring ao encontrar uma das duas alternativas.

Retornar o resultado em uma tupla

Em determinadas situações, pode ser necessário ter o conhecimento de quantas vezes a substituição foi feita em uma string. Isso é possível por meio do método re.subn(), que é equivalente à função re.sub(), mas retorna uma tupla com dois elementos. O primeiro corresponde à string modificada e o segundo, ao número de vezes em que a alteração foi aplicada. Veja um pequeno exemplo a seguir:

import re
 
email = '[email protected] [email protected] [email protected] [email protected]'
lista_email = re.subn(r'@(\w*)(.\w{2,3})', '@novodominio.com.br', email)
print(lista_email)

'''
Resultado:
('[email protected] [email protected] [email protected] [email protected]', 4)
'''

for pessoa in lista_email:
   print(pessoa)

'''
Resultado:
[email protected] [email protected] [email protected] [email protected]
4
'''

No algoritmo acima, utilizamos a mesma lógica de programação que consta no exemplo em que alteramos o domínio do e-mail. A diferença é que aplicamos o método re.subn() para fazer as substituições necessárias.

Perceba que, ao depurarmos o código, tivemos como retorno uma tupla chamada “lista_email” com dois elementos, no qual o primeiro corresponde à string com os endereços de e-mail alterados para o novo domínio, e o segundo, equivale ao número de vezes que a substituição foi realizada.

Por fim, utilizamos uma estrutura de repetição for para percorrer os elementos da tupla “lista_email” e exibi-los na tela.

O método Python replace é usado para substituir trechos de uma string por uma ou mais vezes. Também podemos utilizar o módulo re, no qual podemos aplicar expressões regulares para refinar ainda mais as condições de substituição. Portanto, a linguagem oferece diversos recursos para a manipulação de strings.

Gostou do nosso conteúdo sobre como substituir trechos de uma string? Então confira nosso post sobre o que é desenvolvimento web e como iniciar carreira nessa área!