web-dev-qa-db-ja.com

正規表現の句読点分割[Python]

誰かが正規表現で少し助けてくれますか?私は現在これを持っています:re.split(" +", line.rstrip())、スペースで区切られています。

これを句読点まで拡張するにはどうすればよいですか?

23
dantdj

公式のPythonドキュメンテーションは、これの良い例を持っています。それはすべての非英数字文字(空白と句読点)で分割されます。文字通り\ Wはすべての非Word文字の文字クラスです。注:アンダースコア「_」は「Word」文字と見なされ、ここでは分割の一部にはなりません。

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

その他の例については https://docs.python.org/3/library/re.html を参照してください。「re.split」の検索ページ

35
Mister_Tom

string.punctuationおよび文字クラスの使用:

>>> from string import punctuation
>>> r = re.compile(r'[\s{}]+'.format(re.escape(punctuation)))
>>> r.split('dss!dfs^  #$% jjj^')
['dss', 'dfs', 'jjj', '']
18
import re
st='one two,three; four-five,    six'

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