Das Entfernen von Interpunktion aus Strings ist in vielen Programmierszenarien eine häufige Aufgabe. Obwohl es verschiedene Methoden gibt, kann die Auswahl der effizientesten eine Herausforderung sein.
Für maximale Effizienz steht die String-Übersetzung an erster Stelle. Durch die Verwendung von s.translate(None, string.punctuation) wird sichergestellt, dass rohe String-Operationen in C ausgeführt werden, was eine unübertroffene Geschwindigkeit bietet. Nutzen Sie für Python-Versionen 3.9 und höher s.translate(str.maketrans('', '', string.punctuation)).
Bei Geschwindigkeit nicht von größter Bedeutung ist, ziehen Sie diese Alternativen in Betracht:
Um die Leistung dieser Methoden zu messen, wurde der folgende Code ausgeführt:
import re, string, timeit s = "string. With. Punctuation" exclude = set(string.punctuation) table = string.maketrans("","") regex = re.compile('[%s]' % re.escape(string.punctuation)) def test_set(s): return ''.join(ch for ch in s if ch not in exclude) def test_re(s): return regex.sub('', s) def test_trans(s): return s.translate(table, string.punctuation) def test_repl(s): for c in string.punctuation: s=s.replace(c,"") return s print "sets :",timeit.Timer('f(s)', 'from __main__ import s,test_set as f').timeit(1000000) print "regex :",timeit.Timer('f(s)', 'from __main__ import s,test_re as f').timeit(1000000) print "translate :",timeit.Timer('f(s)', 'from __main__ import s,test_trans as f').timeit(1000000) print "replace :",timeit.Timer('f(s)', 'from __main__ import s,test_repl as f').timeit(1000000)
Die Ergebnisse ergaben Folgendes:
Bei der Geschwindigkeitsoptimierung ist die String-Übersetzung entscheidend unbestrittene Wahl. Für weniger leistungsintensive Szenarien können alternative Ansätze wie Mengenausschluss oder reguläre Ausdrücke zufriedenstellende Ergebnisse liefern.
Das obige ist der detaillierte Inhalt vonWas ist die effizienteste Möglichkeit, Satzzeichen in Python aus Strings zu entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!