3

UTF-8 文字列の単語数をカウントする必要があります。つまり、「एक बार,एक कौआ, बहुत प्यासा, था」を入力として取り、7 (単語数) を返す python 関数を作成する必要があります。

以下に示すように、正規表現「\ b」を試しました。しかし、結果は矛盾しています。

wordCntExp=re.compile(ur'\b',re.UNICODE);
sen='एक बार,एक कौआ, बहुत प्यासा, था';
print len(wordCntExp.findall(sen.decode('utf-8'))) >> 1;
12 

上記の回答の解釈、または上記の問題を解決するための他のアプローチを歓迎します。

4

3 に答える 3

4

使用してみてください:

import re
words = re.split(ur"[\s,]+",sen, flags=re.UNICODE)
count = len(words)

空白とコンマで区切られた単語を分割します。単語に属する文字とは見なされない他の文字を最初の引数に追加できます。

これに触発されて

python 再ドキュメント

于 2013-07-16T08:48:14.380 に答える
0

正規表現の使用:

>>> 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
于 2013-07-16T08:58:27.890 に答える
0

あなたの言語の構造については何も知りませんが、単純にスペースを数えることはできませんか?

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

スペース+ 1があるので注意してください。n - 1[任意の長さのスペースで分割するように編集 - @Martijn Pieters に感謝]

于 2013-07-16T08:45:11.043 に答える