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

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-22 06:58:30300parcourir

How to Remove Non-Printable Characters from Python Strings?

Suppression des caractères non imprimables des chaînes en Python

Question :

En Perl, les caractères non imprimables peuvent être supprimés à l'aide de l'expression regex s/[^[:print:]]//g. Cependant, en Python, la classe [:print:] n'est pas prise en charge. Comment pouvons-nous obtenir une fonctionnalité similaire en Python qui gère à la fois les caractères ASCII et Unicode ?

Réponse :

En raison des limites de Python dans la détection de l'imprimabilité, nous pouvons construire notre propre caractère classe à l'aide du module unicodedata.

<code class="python">import unicodedata, re, itertools, sys

# Generate a list of all characters
all_chars = (chr(i) for i in range(sys.maxunicode))

# Category of control characters
categories = {'Cc'}
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories)

# Escape the control characters for regular expression matching
control_char_re = re.compile('[%s]' % re.escape(control_chars))

# Function to remove control characters from a string
def remove_control_chars(s):
    return control_char_re.sub('', s)</code>

Pour Python 2 :

<code class="python">import unicodedata, re, sys

# Generate a list of all characters
all_chars = (unichr(i) for i in xrange(sys.maxunicode))

# Category of control characters
categories = {'Cc'}
control_chars = ''.join(c for c in all_chars if unicodedata.category(c) in categories)

# Escape the control characters for regular expression matching
control_char_re = re.compile('[%s]' % re.escape(control_chars))

# Function to remove control characters from a string
def remove_control_chars(s):
    return control_char_re.sub('', s)</code>

Option étendue :

Pour suppression plus complète, des catégories supplémentaires peuvent être incluses, même si cela peut avoir un impact sur les performances.

Catégories et nombres de caractères :

  • Cc (contrôle) : 65
  • Cf (format) : 161
  • Cs (substitut) : 2048
  • Co (usage privé) : 137468
  • Cn (non attribué) : 836601

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