Maison  >  Article  >  développement back-end  >  Comment supprimer les caractères non imprimables des chaînes en Python ?

Comment supprimer les caractères non imprimables des chaînes en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-22 06:57:02268parcourir

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

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 à exploiter le module unicodedata. 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 :

<code class="python">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)</code>

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. Cependant, 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 :

<code class="python">control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))</code>

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 les caractères non imprimables ASCII et Unicode.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn