408 Stimmen

Alle Sonderzeichen, Satzzeichen und Leerzeichen aus der Zeichenkette entfernen

Ich muss alle Sonderzeichen, Satzzeichen und Leerzeichen aus einer Zeichenkette entfernen, so dass ich nur Buchstaben und Zahlen habe.

6voto

Andreas Jung Punkte 1

Der allgemeinste Ansatz ist die Verwendung der "Kategorien" der Unicodedata-Tabelle, die jedes einzelne Zeichen klassifiziert. Der folgende Code filtert z. B. nur druckbare Zeichen auf der Grundlage ihrer Kategorie:

import unicodedata
# strip of crap characters (based on the Unicode database
# categorization:
# http://www.sql-und-xml.de/unicode-database/#kategorien

PRINTABLE = set(('Lu', 'Ll', 'Nd', 'Zs'))

def filter_non_printable(s):
    result = []
    ws_last = False
    for c in s:
        c = unicodedata.category(c) in PRINTABLE and c or u'#'
        result.append(c)
    return u''.join(result).replace(u'#', u' ')

Unter der oben angegebenen URL finden Sie alle verwandten Kategorien. Sie können natürlich auch filtern nach den Interpunktionskategorien filtern.

5voto

petezurich Punkte 8280

Für andere Sprachen wie Deutsch, Spanisch, Dänisch, Französisch usw., die Sonderzeichen enthalten (z. B. "Umlaute" als ü , ä , ö ) fügen Sie diese einfach dem Regex-Suchstring hinzu:

Beispiel für Deutsch:

re.sub('[^A-ZÜÖÄa-z0-9]+', '', mystring)

5voto

Dadurch werden alle Sonderzeichen, Satzzeichen und Leerzeichen aus einer Zeichenkette entfernt und nur Zahlen und Buchstaben angezeigt.

import re

sample_str = "Hel&&lo %% Wo$#rl@d"

# using isalnum()
print("".join(k for k in sample_str if k.isalnum()))

# using regex
op2 = re.sub("[^A-Za-z]", "", sample_str)
print(f"op2 = ", op2)

special_char_list = ["$", "@", "#", "&", "%"]

# using list comprehension
op1 = "".join([k for k in sample_str if k not in special_char_list])
print(f"op1 = ", op1)

# using lambda function
op3 = "".join(filter(lambda x: x not in special_char_list, sample_str))
print(f"op3 = ", op3)

4voto

jjmurre Punkte 332

Verwenden Sie translate:

import string

def clean(instr):
    return instr.translate(None, string.punctuation + ' ')

Achtung: Funktioniert nur bei ASCII-Zeichenketten.

3voto

Damit werden alle nicht alphanumerischen Zeichen außer Leerzeichen entfernt.

string = "Special $#! characters   spaces 888323"
''.join(e for e in string if (e.isalnum() or e.isspace()))

Sonderzeichen Leerzeichen 888323

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X