836 Stimmen

Beste Methode zum Entfernen von Interpunktionszeichen aus einer Zeichenkette

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?

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.

10voto

Tim P Punkte 405

Hier ist ein Einzeiler für Python 3.5:

import string
"l*ots! o(f. p@u)n[c}t]u[a'ti\"on#$^?/".translate(str.maketrans({a:None for a in string.punctuation}))

10voto

David Vuong Punkte 91

Das ist vielleicht nicht die beste Lösung, aber so habe ich es gemacht.

import string
f = lambda x: ''.join([i for i in x if i not in string.punctuation])

7voto

Dom Grey Punkte 81

In nicht sehr strengen Fällen könnte ein Einzeiler hilfreich sein:

''.join([c for c in s if c.isalnum() or c.isspace()])

7voto

Haythem HADHAB Punkte 99
import re
s = "string. With. Punctuation?" # Sample string 
out = re.sub(r'[^a-zA-Z0-9\s]', '', s)

0 Stimmen

Das scheint nur für ASCII-Zeichen zu funktionieren.

7voto

Dr.Tautology Punkte 246

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

0 Stimmen

Kommas zwischen Satzzeichen nicht erforderlich. punctlist kann einfach eine Zeichenkette sein

CodeJaeger.com

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.

Powered by:

X