Strings (cadeias de ca­rac­te­res) em Python são imutáveis. Mesmo assim, é possível remover ca­rac­te­res de strings em Python, com a ajuda de métodos que criam uma nova cadeia de ca­rac­te­res — esta conterá somente as partes desejadas da string original. Siga com o tutorial “Python: Remove character from string” para aprender como fazer isso.

Imu­ta­bi­li­dade de strings em Python

Se for imutável, um objeto não pode mais ser alterado após a criação dele. Em Python, todas as cadeias de ca­rac­te­res são imutáveis (immutable). Assim, para que consiga remover ca­rac­te­res de uma string em Python, você terá de criar uma nova cadeia de ca­rac­te­res que inclua apenas os elementos desejados da string original (a string original per­ma­ne­cerá intacta). A imu­ta­bi­li­dade das strings em Python contribui para o uso eficiente da memória e ajuda a evitar efeitos ines­pe­ra­dos em cadeias de ca­rac­te­res.

Remover ca­rac­te­res es­pe­cí­fi­cos de uma string

Se você precisa remover ca­rac­te­res es­pe­cí­fi­cos de uma string em Python, considere usar a função str.replace() ou a função re.sub() com uma expressão regular que re­pre­sente os ca­rac­te­res ou o padrão a ser removido.

str.replace()

A função str.replace() tem o papel de remover partes de um texto ou de substituí-las por uma substring. Observe:

original_string = "Hello, Python#"
modified_string = original_string.replace('#', '!')
print(original_string)  # Output: Hello, Python#
print(modified_string)  # Output: Hello, Python!
Python

No exemplo de código acima, o método replace() substitui todos os ca­rac­te­res # na string original original_string por um ponto de ex­cla­ma­ção (!).

re.sub()

Em Python, a função re.sub() faz parte do módulo re (regular ex­pres­si­ons). Com ela, você consegue buscar e subs­ti­tuir ex­pres­sões regulares em strings, como mostra o exemplo a seguir:

import re
original_string = "Hello, World! @#$%^&*"
modified_string = re.sub(r'[@#$%^&*]', '', original_string)
print(original_string)  # Output: Hello, World! @#$%^&*
print(modified_string)  # Output: Hello, World!
Python

Aqui, o padrão [@#$%^&*] é uma expressão regular que cor­res­ponde aos ca­rac­te­res especiais @, #, $, %, ^, &,*. A função re.sub() procura todas as ocor­rên­cias do padrão na string original original_string e as substitui por uma string vazia (''). O resultado é ar­ma­ze­nado na variável modified_string e então exibido.

Remover todos os ca­rac­te­res exceto letras

Para remover, de uma string em Python, todos os ca­rac­te­res que não são letras, você pode usar qualquer um destes métodos: isalpha(), filter(), re.sub() e outros.

re.sub()

import re
original_string = "Hello, 123 World! @#$%^&*"
modified_string = re.sub(r'[^a-zA-Z]', '', original_string)
print(original_string)  # Output: Hello, 123 World! @#$%^&*
print(modified_string)  # Output: HelloWorld
Python

No exemplo de código acima, a expressão regular [^a-zA-Z] coincide com qualquer caractere que não seja uma letra minúscula ou maiúscula. Como resultado, a nova cadeia de ca­rac­te­res modified_string exibe somente as letras da string original. Veja que até os espaços são removidos.

isalpha()

original_string = "Hello, 123 World! @#$%^&*"
modified_string = ''.join(char for char in original_string if char.isalpha())
print(original_string)  # Output: Hello, 123 World! @#$%^&*
print(modified_string)  # Output: HelloWorld
Python

Nesse exemplo, uti­li­za­mos uma com­pre­en­são de lista (list com­prehen­sion) para iterar por cada letra, na string original original_string. O método isalpha() verifica se um caractere é ou não é uma letra. Apenas as letras são incluídas na nova cadeia de ca­rac­te­res modified_string, sendo todos os outros ca­rac­te­res ignorados.

filter()

original_string = "Hello, 123 World! @#$%^&*"
filtered_chars = filter(str.isalpha, original_string)
modified_string = ''.join(filtered_chars)
print(original_string)  # Output: Hello, 123 World! @#$%^&*
print(modified_string)  # Output: HelloWorld
Python

No exemplo de código acima, str.isalpha() é um método que retorna True se o caractere for uma letra, e False em caso contrário. A função filter() cria um objeto de filtro contendo somente os ca­rac­te­res para os quais a condição str.isalpha() é ver­da­deira. Assim, é possível remover todos os ca­rac­te­res da string original original_string que não são letras.

Remover todos os ca­rac­te­res exceto números

Como nos exemplos an­te­ri­o­res, também é possível filtrar números em códigos Python. Para fazer isso, você deve inserir as funções re.sub(), filter() ou isdecimal() (essa última é análoga à função isalpha()).

re.sub()

import re
original_string = "Hello, 123 World! @#$%^&*"
modified_string = re.sub('[^0-9]', '', original_string)
print(original_string)   # Output: Hello, 123 World! @#$%^&*
print(modified_string)    # Output: 123
Python

Com o trecho 0-9 definimos um intervalo. Este contém todos os dígitos de 0 a 9. O hífen (-) entre o 0 e o 9 funciona como operador de intervalo, já o ^ antes dos números refere-se a todos os ca­rac­te­res que não estejam dentro do intervalo es­pe­ci­fi­cado (de 0 a 9). Ao ser usada, a função re.sub os substitui por ca­rac­te­res vazios.

filter()

original_string = "Hello, 123 World! @#$%^&*"
filtered_chars = filter(str.isdecimal, original_string)
modified_string = ''.join(filtered_chars)
print(original_string)   # Output: Hello, 123 World! @#$%^&*
print(modified_string)    # Output: 123
Python

Se combinar as funções filter() e isdecimal(), você poderá preservar os números de uma string e remover os demais ca­rac­te­res, como no exemplo acima. Observe, no código, que a nova string inclui apenas os números 123.

isdecimal()

original_string = "Hello, 123 World"
modified_string = ''.join('*' if not char.isdecimal() else char for char in original_string)
print(original_string)   # Output: Hello, 123 World
print(modified_string)    # Output: *******123******
Python

Você também pode fazer uso do método isdecimal() em uma com­pre­en­são de lista para iterar por cada char na string original original_string. Se o caractere não for um dígito decimal (ou seja, se not char.isdecimal() for ver­da­deiro), ele é subs­ti­tuído por um asterisco (*). Em caso contrário, ele permanece inal­te­rado.

Remover ca­rac­te­res com translate()

O método translate() é uma função integrada em Python, que pos­si­bi­lita a tradução e a subs­ti­tui­ção avançada de ca­rac­te­res em strings. Ele é uma opção eficiente para subs­ti­tui­ções de ca­rac­te­res re­a­li­za­das com base em tabelas de tradução. O exemplo abaixo demonstra o fun­ci­o­na­mento:

original_string = "Hello, World! Remove vowels."
translation_table = str.maketrans(dict.fromkeys('aeiouAEIOU', '*'))
modified_string = original_string.translate(translation_table)
print(original_string)   # Output: Hello, World! Remove vowels.
print(modified_string)    # Output: H*ll*, W*rld! R*m*v* v*w*ls.
Python

Aqui, usamos os cons­tru­to­res str.maketrans() e dict.fromkeys() para criarmos uma tabela de tradução. Ela determina que todas as vogais sejam subs­ti­tuí­das por *. Dessa forma, a tabela é aplicada à string original, para a obtenção da cadeia de ca­rac­te­res mo­di­fi­cada modified_string.

Dica

Ao filtrar strings, você também pode usar o Python string index. Ele é capaz de excluir ca­rac­te­res em certos locais. Já se você deseja exibir strings em um formato es­pe­cí­fico, aprenda como fazê-lo com este tutorial do nossos Digital Guide sobre a for­ma­ta­ção de strings em Python.

Hos­pe­da­gem que se adapta às suas ambições
  • Fique online com 99,99% de tempo de atividade e segurança robusta
  • Aumente o de­sem­pe­nho com um clique à medida que o tráfego cresce
  • Inclui domínio gratuito, SSL, e-mail e suporte 24 horas por dia, 7 dias por semana
Ir para o menu principal