Entfernen nicht druckbarer Zeichen aus einem String in Python
Im Gegensatz zu Perl fehlen in Python POSIX-Regex-Klassen, was die Erkennung erschwert und entfernen Sie nicht druckbare Zeichen mithilfe regulärer Ausdrücke.
Wie können Sie dies in Python erreichen?
Eins Der Ansatz besteht darin, das Unicodedata-Modul zu nutzen. Die Funktion unicodedata.category klassifiziert Unicode-Zeichen in verschiedene Kategorien. Beispielsweise stellen Zeichen, die als Cc (Steuerzeichen) kategorisiert sind, nicht druckbare Zeichen dar.
Mit diesem Wissen können Sie eine benutzerdefinierte Zeichenklasse erstellen, die allen Steuerzeichen entspricht:
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)
Diese Funktion entfernt effektiv alle nicht druckbaren ASCII-Zeichen aus der Eingabezeichenfolge.
Alternativ können Sie die in Python integrierte string.printable-Methode verwenden um nicht druckbare Zeichen herauszufiltern. Allerdings schließt diese Methode Unicode-Zeichen aus, sodass sie möglicherweise nicht für alle Anwendungsfälle geeignet ist.
Um Unicode-Zeichen zu verarbeiten, können Sie die Zeichenklasse im regulären Ausdruck wie folgt erweitern:
control_chars = ''.join(map(chr, itertools.chain(range(0x00,0x20), range(0x7f,0xa0))))
Diese erweiterte Zeichenklasse umfasst die grundlegenden Steuerzeichen sowie gängige nicht druckbare Unicode-Zeichen.
Durch entsprechende Änderung der Funktion „remove_control_chars“ können Sie erfolgreich damit umgehen sowohl ASCII- als auch Unicode-nicht druckbare Zeichen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3