Suppression des caractères non imprimables d'une chaîne en Python
Contrairement à Perl, Python ne dispose pas de classes d'expressions régulières POSIX, ce qui rend sa détection difficile. et supprimez les caractères non imprimables à l'aide d'expressions régulières.
Alors, comment pouvez-vous y parvenir en Python ?
Une approche consiste à tirer parti de module de données unicode. La fonction unicodedata.category classe les caractères Unicode en différentes catégories. Par exemple, les caractères classés comme Cc (contrôle) représentent des caractères non imprimables.
En utilisant ces connaissances, vous pouvez créer une classe de caractères personnalisée qui correspond à tous les caractères de contrôle :
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)
Cette fonction supprime efficacement tous les caractères ASCII non imprimables de la chaîne d'entrée.
Vous pouvez également utiliser la méthode string.printable intégrée de Python pour filtrer les caractères non imprimables. Toutefois, cette méthode exclut les caractères Unicode et peut donc ne pas convenir à tous les cas d'utilisation.
Pour gérer les caractères Unicode, vous pouvez développer la classe de caractères dans l'expression régulière comme suit :
control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))
Cette classe de caractères étendue englobe les caractères de contrôle de base ainsi que les caractères Unicode non imprimables courants.
En modifiant la fonction remove_control_chars en conséquence, vous pouvez gérer avec succès Caractères non imprimables ASCII et Unicode.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3