2016-11-02 7 views
-6

Wie entferne ich Interpunktion aus einer Zeichenfolge in Python? Ich folgte dem Ansatz, den jemand auf Stackoverflow gepostet hat, aber es funktioniert nicht.Entfernen von Zeichensetzung aus einer Zeichenfolge

punctuation = ['(', ')', '?', ':', ':', ',', '.', '!', '/', '"', "'"] 

str = input("Hi, my name is Yael Shapiro!") 

for i in punctuation: 
    str = str.replace(i,"") 

print(str) 
+3

* "nicht funktioniert" * ist ein völlig nutzloses Problem Beschreibung – jonrsharpe

+0

Auch nicht als Variablennamen eingebaut. 'str' ist ein eingebauter Code, und Sie werden sicherlich Probleme bekommen, eingebaute Namen zu beschatten. – idjaw

Antwort

0

Ich finde mit einer Kombination aus gencomp und "".join() funktioniert gut:

>>> import string 
>>> s = "Does this string. Have punctuation?" 
>>> 
>>> "".join((char for char in s if char not in string.punctuation)) 
'Does this string Have punctuation' 
>>> 

Und als eine Randnotiz, nicht verwenden str als Bezeichner wie es already has a meaning in the Python language.

Der Grund, dass Ihr Code nicht funktioniert, liegt wahrscheinlich daran, dass Sie das, was input() tut, falsch verstehen. input() erhält einfach die Eingabe vom Benutzer und gibt die Eingabe zurück. Es scheint mir, dass alles, was Sie tun möchten, ist eine Zeichenfolge, in der nur tun: sstr = "Hi, my name is Yael Shapiro!"

+0

Vielen Dank! Also ändere ich es in den folgenden, aber es entfernt immer noch nicht die Interpunktion: import string sstr = "Hallo, mein Name ist Yael Shapiro!" ".join ((char für char in sstr wenn char nicht in string.punctuation)) print (sstr) – Yjell

+0

Sie müssen den Wert von" sstr "zu Ihrer stripped Zeichenfolge zuweisen. Mit anderen Worten, verwenden Sie 'sstr =" .join ((char für char in sstr wenn char nicht in string.punctuation)) '' anstelle von '" .join ((char für char in sstr wenn char nicht in string.punctuation)) '. –

Verwandte Themen