HOWTO · Python

Remover caracteres não alfanuméricos da string Python

Este tutorial demonstra como remover todos os caracteres não alfanuméricos de uma string em Python.

Os caracteres alfanuméricos contêm a mistura dos 26 caracteres do conjunto de letras e os números de 0 a 9. Os caracteres não alfanuméricos incluem os caracteres que não são letras ou dígitos, como + e @.

Neste tutorial, discutiremos como remover caracteres não alfanuméricos de uma string em Python.

Use o método isalnum() para remover todos os caracteres não alfanuméricos na string Python

Podemos usar o método isalnum() para verificar se um determinado caractere ou string é alfanumérico ou não. Podemos comparar cada caractere individualmente a partir de uma string e, se for alfanumérico, combinamos com a função join().

Por exemplo,

string_value = "alphanumeric@123__"
s = "".join(ch for ch in string_value if ch.isalnum())
print(s)

Resultado:

alphanumeric123

Use a função filter() para remover todos os caracteres não alfanuméricos na string Python

A função filter() é usada para construir um iterador a partir de componentes do objeto iterável e filtra os elementos do objeto usando uma função.

Para nosso problema, a string é nosso objeto, e usaremos a função isalnum(), que verifica se uma determinada string contém caracteres alfanuméricos ou não, verificando cada caractere. A função join() combina todos os caracteres para retornar uma string.

Por exemplo,

string_value = "alphanumeric@123__"
s = "".join(filter(str.isalnum, string_value))
print(s)

Resultado:

alphanumeric123

Este método não funciona com Python 3.

Use expressões regulares para remover todos os caracteres não alfanuméricos na string Python

Uma expressão regular é um agrupamento excepcional de caracteres que ajuda a combinar diferentes strings ou conjuntos de strings, utilizando uma sintaxe específica em um padrão. Para usar expressões regulares, importamos o módulo re.

Podemos usar a função sub() deste módulo para substituir toda a string que corresponde a um caractere não alfanumérico por um caractere vazio.

Por exemplo,

import re

string_value = "alphanumeric@123__"
s = re.sub(r"[\W_]+", "", string_value)
print(s)

Resultado:

alphanumeric123

Como alternativa, também podemos usar o seguinte padrão.

import re

string_value = "alphanumeric@123__"
s = re.sub(r"[^a-zA-Z0-9]", "", string_value)
print(s)

Resultado:

alphanumeric123