Es scheint einen einfacheren Weg zu geben als:
import string
s = "string. With. Punctuation?" # Sample string
out = s.translate(string.maketrans("",""), string.punctuation)
Gibt es eine?
Es scheint einen einfacheren Weg zu geben als:
import string
s = "string. With. Punctuation?" # Sample string
out = s.translate(string.maketrans("",""), string.punctuation)
Gibt es eine?
Hier ist eine Funktion, die ich geschrieben habe. Sie ist nicht sehr effizient, aber sie ist einfach und Sie können jede gewünschte Interpunktion hinzufügen oder entfernen:
def stripPunc(wordList):
"""Strips punctuation from list of words"""
puncList = [".",";",":","!","?","/","\\",",","#","@","$","&",")","(","\""]
for punc in puncList:
for word in wordList:
wordList=[word.replace(punc,'') for word in wordList]
return wordList
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.
4 Stimmen
Das scheint mir ziemlich einfach zu sein. Warum wollen Sie es ändern? Wenn Sie es einfacher haben wollen, verpacken Sie einfach, was Sie gerade geschrieben haben, in eine Funktion.
3 Stimmen
Nun, es schien nur ein bisschen hackish zu sein, mit Art von einem Nebeneffekt von str.translate, um die Arbeit zu tun. Ich dachte, es könnte etwas mehr wie str.strip(chars), die auf die gesamte Zeichenfolge anstelle von nur die Grenzen, die ich verpasst hatte gearbeitet werden.
2 Stimmen
Das hängt auch von den Daten ab. Die Verwendung bei Daten, die Servernamen mit Unterstrichen als Teil des Namens enthalten (was an manchen Orten recht häufig vorkommt), könnte schlecht sein. Seien Sie sicher, dass Sie die Daten kennen und wissen, was sie enthalten, oder Sie könnten am Ende mit einer Teilmenge des Problems clbuttic.
65 Stimmen
Es kommt auch darauf an, was Sie als Interpunktion bezeichnen. "
The temperature in the O'Reilly & Arbuthnot-Smythe server's main rack is 40.5 degrees.
" enthält genau EIN Interpunktionszeichen, das zweite ".45 Stimmen
Ich bin überrascht, dass das noch niemand erwähnt hat.
string.punctuation
enthält überhaupt keine nicht-englischen Satzzeichen. Ich denke an ×"", und so weiter.2 Stimmen
Funktioniert nicht mit einer Unicode-Zeichenkette?
2 Stimmen
@JohnMachin du vergisst, dass
' '
ist Zeichensetzung .2 Stimmen
Ab Python 3.1 (bis mindestens 3.8.3), werden Sie wollen:
str.maketrans("","", string.punctuation)
per diese Dokumentation mit der Änderung dokumentiert in 3.10 Stimmen
Die meisten Diskussionen hier betreffen Python 2, diese Frage ist ähnlich hat aber bessere Antworten als Python 3.
0 Stimmen
Ich habe die Lösung nicht gesehen
s.strip(string.punctuation)
; beantwortet das nicht die Frage? Was übersehe ich?0 Stimmen
Es ist unklar, was das Problem/die Qualifikationen hier sind; daher ist diese Frage derzeit nicht themenbezogen. Was ist an der angewandten Methode nicht einfach genug? Bitte klären Sie sachlich, was Sie daran für zu komplex halten. Ist eine Zeile zu viel? Ist es die Anzahl der dafür erforderlichen Funktionen? Ist es eine bestimmte Funktion, die Sie lieber vermeiden würden? Etc.
0 Stimmen
@Clément Hier ist eine gute Unicode-bewusste Antwort
0 Stimmen
@Brownbat Und mit Python 3 meinen Sie "Unicode-fähig". Mein vorheriger Kommentar verweist auf eine Antwort auf diese Frage, die Unicode-fähig ist und sowohl die Unicode-Kategorien "S" (Symbole) und "P" (Interpunktion) erwähnt.