正则表达式拆分以西里尔字符串

时间:2017-06-08 18:46:25

标签: python regex unicode split

我需要一种简单易用的方法来隔离不同语言字符串中的单词。我知道这不是一项微不足道的任务,但我只想分散像.,;:?!@#这样的常见标点符号。目前我正在使用:

x = "this is sparta, or not."
print re.split([^-\w]', x)
['this', 'is', 'sparta', '', 'Or', 'not', '']

但是,当我使用西里尔字符串时:

x =  u'правил произношение суффиксов можно иногда'
w = re.split(r'[^-\w]', x)

我明白了:

[u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'']

如何制作单个通用分割器,解决了这个问题?谢谢!

编辑:上面的问题是在Python 2.7.10上。

2 个答案:

答案 0 :(得分:4)

试试这个:

re.split(r'\W', x, flags=re.UNICODE)

它在2.7.13上为我工作。

答案 1 :(得分:0)

我在Python3控制台上复制并通过你的代码,一切正常但是当我在Python2.7上试用它时,你遇到了同样的问题。

这是unicode问题。

x =  u'правил произношение суффиксов можно иногда'
myinput = raw_input(x.encode('utf8'))
w = re.split(r'[^-\w]', myinput)