2016-11-02 5 views
-6

Как удалить пунктуацию из строки в python? Я придерживался подхода, который кто-то размещал в Stackoverflow, но он не работает.Удаление пунктуации из строки

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

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

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

print(str) 
+3

* «не работает» * - это совершенно бесполезная проблема. – jonrsharpe

+0

Кроме того, не используйте встроенные в качестве переменных имена. 'str' является встроенным, и вы наверняка столкнетесь с проблемами, скрывающими встроенные имена. – idjaw

ответ

0

Я нахожу, используя комбинацию gencomp и "".join() работает хорошо:

>>> 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' 
>>> 

И как примечание стороны, не следует использовать str в качестве идентификатора, как это already has a meaning in the Python language.

Причина, по которой ваш код не работает, возможно, потому, что вы не понимаете, что делает input(). input() просто получает вход от пользователя и возвращает вход. Мне кажется, что все, что вы хотите сделать, - это строка, в которой только что делают: sstr = "Hi, my name is Yael Shapiro!"

+0

Большое спасибо! Поэтому я меняю его на следующее, но он все равно не удаляет знаки препинания: строка импорта sstr = «Привет, меня зовут Яэль Шапиро!» «" .join ((char для char в sstr, если char не в string.punctuation)) print (sstr) – Yjell

+0

Вам нужно присвоить значение 'sstr' вашей разделенной строке. Другими словами, используйте 'sstr =" .join ((char для char в sstr, если char не в string.punctuation)) 'вместо'. .Join ((char для char в sstr, если char не в string.punctuation)) '. –

Смежные вопросы