Como remover caracteres de strings em Python
Strings (cadeias de caracteres) em Python são imutáveis. Mesmo assim, é possível remover caracteres de strings em Python, com a ajuda de métodos que criam uma nova cadeia de caracteres — esta conterá somente as partes desejadas da string original. Siga com o tutorial “Python: Remove character from string” para aprender como fazer isso.
Imutabilidade 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 caracteres são imutáveis (immutable). Assim, para que consiga remover caracteres de uma string em Python, você terá de criar uma nova cadeia de caracteres que inclua apenas os elementos desejados da string original (a string original permanecerá intacta). A imutabilidade das strings em Python contribui para o uso eficiente da memória e ajuda a evitar efeitos inesperados em cadeias de caracteres.
Remover caracteres específicos de uma string
Se você precisa remover caracteres específicos de uma string em Python, considere usar a função str.replace()
ou a função re.sub()
com uma expressão regular que represente os caracteres 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:
No exemplo de código acima, o método replace()
substitui todos os caracteres #
na string original original_string
por um ponto de exclamação (!
).
re.sub()
Em Python, a função re.sub()
faz parte do módulo re (regular expressions). Com ela, você consegue buscar e substituir expressões regulares em strings, como mostra o exemplo a seguir:
Aqui, o padrão [@#$%^&*]
é uma expressão regular que corresponde aos caracteres especiais @, #, $, %, ^, &,*
. A função re.sub()
procura todas as ocorrências do padrão na string original original_string
e as substitui por uma string vazia (''
). O resultado é armazenado na variável modified_string
e então exibido.
Remover todos os caracteres exceto letras
Para remover, de uma string em Python, todos os caracteres que não são letras, você pode usar qualquer um destes métodos: isalpha()
, filter()
, re.sub()
e outros.
re.sub()
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 caracteres modified_string
exibe somente as letras da string original. Veja que até os espaços são removidos.
isalpha()
Nesse exemplo, utilizamos uma compreensão de lista (list comprehension) 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 caracteres modified_string
, sendo todos os outros caracteres ignorados.
filter()
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 caracteres para os quais a condição str.isalpha()
é verdadeira. Assim, é possível remover todos os caracteres da string original original_string
que não são letras.
Remover todos os caracteres exceto números
Como nos exemplos anteriores, 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()
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 caracteres que não estejam dentro do intervalo especificado (de 0 a 9). Ao ser usada, a função re.sub
os substitui por caracteres vazios.
filter()
Se combinar as funções filter()
e isdecimal()
, você poderá preservar os números de uma string e remover os demais caracteres, como no exemplo acima. Observe, no código, que a nova string inclui apenas os números 123
.
isdecimal()
Você também pode fazer uso do método isdecimal()
em uma compreensã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 verdadeiro), ele é substituído por um asterisco (*
). Em caso contrário, ele permanece inalterado.
Remover caracteres com translate()
O método translate()
é uma função integrada em Python, que possibilita a tradução e a substituição avançada de caracteres em strings. Ele é uma opção eficiente para substituições de caracteres realizadas com base em tabelas de tradução. O exemplo abaixo demonstra o funcionamento:
Aqui, usamos os construtores str.maketrans()
e dict.fromkeys()
para criarmos uma tabela de tradução. Ela determina que todas as vogais sejam substituídas por *
. Dessa forma, a tabela é aplicada à string original, para a obtenção da cadeia de caracteres modificada modified_string
.
Ao filtrar strings, você também pode usar o Python string index. Ele é capaz de excluir caracteres em certos locais. Já se você deseja exibir strings em um formato específico, aprenda como fazê-lo com este tutorial do nossos Digital Guide sobre a formatação de strings em Python.
Rápido e escalável, confie na hospedagem da IONOS, que inclui domínio grátis no primeiro ano e endereço de e-mail!
- Domínio
- SSL Wildcard
- Suporte 24 horas