Python:UTF-8:如何计算UTF-8字符串中的单词数?

3
我需要计算UTF-8字符串中的单词数量。即我需要编写一个Python函数,该函数以"एक बार,एक कौआ, बहुत प्यासा, था"作为输入,并返回7(单词数)。
我尝试了正则表达式"\b",如下所示。但结果不一致。
wordCntExp=re.compile(ur'\b',re.UNICODE);
sen='एक बार,एक कौआ, बहुत प्यासा, था';
print len(wordCntExp.findall(sen.decode('utf-8'))) >> 1;
12 

欢迎提供对以上答案的任何解释或其他解决上述问题的方法。

3个回答

5
尝试使用:
import re
words = re.split(ur"[\s,]+",sen, flags=re.UNICODE)
count = len(words)

它将分割由空格和逗号分隔的单词。您可以在第一个参数中添加其他不被视为单词字符的字符。 灵感来自于这里 Python re文档

感谢正则表达式。 - user2586432

0
使用正则表达式 regex
>>> import regex
>>> sen = 'एक बार,एक कौआ, बहुत प्यासा, था'
>>> regex.findall(ur'\w+', sen.decode('utf-8'))
[u'\u090f\u0915', u'\u092c\u093e\u0930', u'\u090f\u0915', u'\u0915\u094c\u0906', u'\u092c\u0939\u0941\u0924', u'\u092a\u094d\u092f\u093e\u0938\u093e', u'\u0925\u093e']
>>> len(regex.findall(ur'\w+', sen.decode('utf-8')))
7

0

我不了解你们语言的结构,但是你不能简单地数一下空格吗?

>>> len(sen.split()) + 1
7

注意+1,因为有n-1个空格。[编辑以在任意长度的空格上拆分 - 感谢@Martijn Pieters]


在这种情况下,您可以使用.split()来拆分任意宽度的空格。但是这不起作用,因为示例句子中有一个逗号没有尾随空格,我们可能不知道这在印地语中是否允许。 - Martijn Pieters
我不能仅依赖空格,因为单词之间可能有多个空格。 >>> sen='एक बार,एक कौआ, बहुत प्यासा, था'; >>> len(sen.split(" "))+1 8 - user2586432

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接