Попробуйте это:
import re
mystr = 'This is a string, with words!'
wordList = re.sub("[^\w]", " ", mystr).split()
Как это работает:
Из документов:
re.sub(pattern, repl, string, count=0, flags=0)
Возвращает строку, полученную путем замены крайнего левого не перекрывающегося вхождения шаблона в строке заменой repl. Если шаблон не найден, строка возвращается без изменений. repl может быть строкой или функцией.
так в нашем случае:
шаблон - любой не алфавитно-цифровой символ.
[\ w] означает любой буквенно-цифровой символ и равен набору символов
[A-Za-Z0-9 _]
от А до Я, от А до Я, от 0 до 9 и подчеркивание.
, поэтому мы сопоставляем любой не алфавитно-цифровой символ и заменяем его пробелом.
и затем мы разделяем его, разделяя строку на пробелы и преобразуя ее в список
так что "привет-мир"
становится 'Привет, мир'
с повтором
и затем ['привет', 'мир']
после разделения ()
дайте мне знать, если возникнут какие-либо сомнения.