Может ли кто-нибудь мне немного помочь с регулярными выражениями? В настоящее время у меня есть это: re.split(" +", line.rstrip())
, который разделяет пробелы.Знак препинания Regex [Python]
Как я могу расширить это, чтобы накрыть знаки препинания?
Может ли кто-нибудь мне немного помочь с регулярными выражениями? В настоящее время у меня есть это: re.split(" +", line.rstrip())
, который разделяет пробелы.Знак препинания Regex [Python]
Как я могу расширить это, чтобы накрыть знаки препинания?
Официальная документация Python имеет хороший пример для этого. Он будет разбит на все не буквенно-цифровые символы (пробелы и знаки препинания). Буквально \ W является символьным классом для всех символов, отличных от Word. Примечание: подчеркивание «_» считается символом «слово» и не будет частью разделения.
re.split('\W+', 'Words, words, words.')
См https://docs.python.org/3/library/re.html другие примеры, страницы поиска для «re.split»
Использование 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']
, как вы можете включить [и] в список [,..] –
@ O.rka Задайте новый вопрос, если у вас есть новый вопрос. Но кратко, '[] [,; .-]' – tripleee
Только в случае, кажется, что вы могли бы делать некоторые простые синтаксический, которые могут быть охвачены shlex, из документации:
«shlex класс позволяет легко писать лексические анализаторы для простых синтаксисов напоминающих, что оболочки Unix. Это часто будет полезно для написания minilanguages, (например, в перспективе управляющих файлами для приложений Python) или для синтаксического анализа цитируемых строк. "
Лучше, чем мое. +1 – dawg
Отлично, приветствия! – dantdj
@dantdj Итак, вы хотите, чтобы он разбивался на '' 'и' '' и '*' и т. Д. Этот ответ делает это. Как и в 'My name's steve', будет разбит на' My name' и 'steve'. –