Bester Weg, Satzzeichen aus einer Zeichenfolge zu entfernen
Beim Versuch, Satzzeichen aus einer Zeichenfolge in Python zu entfernen, könnte man den folgenden Ansatz verwenden:
import string s = "string. With. Punctuation?" # Sample string out = s.translate(string.maketrans("",""), string.punctuation)
Diese Methode kann jedoch zu komplex erscheinen. Gibt es einfachere Lösungen?
Effizienzperspektive
Für optimale Effizienz ist es kaum zu übertreffen:
s.translate(None, string.punctuation)
Dieser Code verwendet den Rohstring von C Operationen mit einer Nachschlagetabelle, die eine hochoptimierte Lösung bieten.
Alternative Ansätze
Wenn Geschwindigkeit nicht im Vordergrund steht, ziehen Sie die folgende Alternative in Betracht:
exclude = set(string.punctuation) s = ''.join(ch for ch in s if ch not in exclude)
Diese Option ist schneller als die Verwendung von s.replace für jedes Zeichen, wird aber von non immer noch übertroffen -reine Python-Ansätze wie string.translate.
Timing-Analyse
Zum Vergleich Für die Leistung dieser Methoden wird der folgende Timing-Code verwendet:
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 zeigen, dass:
Daher ist es für eine effiziente Entfernung von Satzzeichen ratsam, s.translate(None, string.punctuation) (für niedrigere Python-Versionen) oder s.translate(str.maketrans(') zu verwenden. ', '', string.punctuation)) (für höhere Python-Versionen) Code.
Das obige ist der detaillierte Inhalt vonWas ist der effizienteste Weg, Satzzeichen aus einem String in Python zu entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!