Heim > Backend-Entwicklung > Python-Tutorial > Was ist die effizienteste Möglichkeit, Satzzeichen in Python aus Strings zu entfernen?

Was ist die effizienteste Möglichkeit, Satzzeichen in Python aus Strings zu entfernen?

Mary-Kate Olsen
Freigeben: 2024-12-26 06:30:27
Original
183 Leute haben es durchsucht

What's the Most Efficient Way to Remove Punctuation from Strings in Python?

Interpunktion aus Strings entfernen: Der optimale Ansatz

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.

Unvergleichliche Effizienz: String-Übersetzung

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)).

Alternative Ansätze für nicht leistungskritische Szenarien

Bei Geschwindigkeit nicht von größter Bedeutung ist, ziehen Sie diese Alternativen in Betracht:

  • Satzausschluss: Erstellen Sie einen Satz von Interpunktionszeichen und schließen Sie sie mithilfe von Mengenverständnis aus der Zeichenfolge aus (z. B. ''.join(ch für ch in s, wenn ch nicht in include)).
  • Reguläre Ausdrücke: Verwenden Sie reguläre Ausdrücke um Satzzeichen abzugleichen und zu entfernen (z. B. regex.sub('', s), wobei Regex ein vorkompilierter regulärer Ausdruck ist Ausdruck).

Leistungsvergleich

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)
Nach dem Login kopieren

Die Ergebnisse ergaben Folgendes:

  • String-Übersetzung: 2,12455511093 Sekunden
  • Reguläre Ausdrücke: 6,86155414581 Sekunden
  • Satzausschluss: 19,8566138744 Sekunden
  • Zeichenersetzung: 28,4436721802 Sekunden

Fazit

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage