Подтвердить что ты не робот

Разметка пунктуации регулярных выражений [Python]

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

Как я могу развернуть это, чтобы также отметить пунктуацию?

4b9b3361

Ответ 1

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

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

Подробнее см. http://docs.python.org/2/library/re.html, страницу поиска для "re.split"

Ответ 2

Использование string.punctuation и класса символов:

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

Ответ 3

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

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

Ответ 4

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

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

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