"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment supprimer les caractères non imprimables des chaînes en Python ?

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

Publié le 2024-11-09
Parcourir:416

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 à 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.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729551315. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

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