"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como remover caracteres não imprimíveis de strings em Python?

Como remover caracteres não imprimíveis de strings em Python?

Publicado em 2024-11-09
Navegar:663

How to Remove Non-Printable Characters from Strings in Python?

Removendo caracteres não imprimíveis de uma string em Python

Em contraste com Perl, Python não possui classes regex POSIX, tornando-o difícil de detectar e remova caracteres não imprimíveis usando expressões regulares.

Então, como você pode conseguir isso em Python?

Uma abordagem é aproveitar o módulo unicodedata. A função unicodedata.category classifica os caracteres Unicode em várias categorias. Por exemplo, caracteres categorizados como Cc (controle) representam caracteres não imprimíveis.

Usando esse conhecimento, você pode construir uma classe de caracteres personalizada que corresponda a todos os caracteres de controle:

import unicodedata
import re
import sys

all_chars = (chr(i) for i in range(sys.maxunicode))
categories = {'Cc'}
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories)

control_char_re = re.compile('[%s]' % re.escape(control_chars))

def remove_control_chars(s):
    return control_char_re.sub('', s)

Esta função remove efetivamente todos os caracteres ASCII não imprimíveis da string de entrada.

Como alternativa, você pode usar o método string.printable integrado do Python para filtrar caracteres não imprimíveis. No entanto, esse método exclui caracteres Unicode, portanto, pode não ser adequado para todos os casos de uso.

Para lidar com caracteres Unicode, você pode expandir a classe de caracteres na expressão regular da seguinte maneira:

control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))

Esta classe de caracteres estendida abrange os caracteres de controle básicos junto com caracteres não comuns -caracteres Unicode imprimíveis.

Ao modificar a função remove_control_chars adequadamente, você pode lidar com êxito com caracteres não imprimíveis ASCII e Unicode.

Declaração de lançamento Este artigo foi reimpresso em: 1729551315 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3