Регулярное выражение пунктуация split [Python]

может кто-нибудь помочь мне немного с regexs? В настоящее время у меня есть это: re.split(" +", line.rstrip()), который отделяется пробелами.

Как я могу расширить это, чтобы охватить пунктуацию?

4 ответов


официальной документации Python есть хороший пример для этого. Он будет разделен на все не буквенно-цифровые символы (пробелы и знаки препинания). Буквально \W-это класс символов для всех не-словесных символов. Примечание: подчеркивание " _ "считается символом" word " и не будет частью разделения здесь.

re.split('\W+', 'Words, words, words.')

см.https://docs.python.org/3/library/re.html Для больше примеров, страница поиска для " re.сплит"


используя string.punctuation и класс персонажа:

>>> from string import punctuation
>>> r = re.compile(r'[\s{}]+'.format(re.escape(punctuation)))
>>> r.split('dss!dfs^  #$% jjj^')
['dss', 'dfs', 'jjj', '']

import re
st='one two,three; four-five,    six'

print re.split(r'\s+|[,;.-]\s*', st)
# ['one', 'two', 'three', 'four', 'five', 'six']

на всякий случай, Похоже, вы можете сделать простой синтаксический анализ, который может быть покрыт shlex, из документации:

"класс shlex позволяет легко писать лексические анализаторы для простых синтаксис, напоминающий оболочки Unix. Это часто будет полезно для написания minilanguages, (например, в ведении управляющих файлов для Приложения Python) или для синтаксического анализа веревка."

http://docs.python.org/2/library/shlex.html