Ich muss alle Sonderzeichen, Satzzeichen und Leerzeichen aus einer Zeichenkette entfernen, so dass ich nur Buchstaben und Zahlen habe.
Antworten
Zu viele Anzeigen?
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.
petezurich
Punkte
8280
Shubham Shewdikar
Punkte
71
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)
jjmurre
Punkte
332
Gobinath Viswanathan
Punkte
33