0

私はこのようなテキストを持っています:

এরজন্যবুদ্ধির(理由)প্রয়োজননেই、প্রই

言語はベンガル語です(もちろん1つの英語の単語は別として)。

テキスト内のベンガル語のリストを取得したい(つまり、単語のトークン化の問題)。ベンガル語のUnicode範囲は0980〜09FFです。\ p {Bengali}スクリプトもあります(使用方法がわかりません)。これが私が持っているものです:

import re
Pattern = re.compile(r'\[\u0980-\u09FF]+')
Words = split(Pattern, Text)

これは機能していません。どうすればこれを機能させることができますか?また、可能であれば、明示的なUnicode範囲ではなく、\p{Bengali}を使用することをお勧めします。

4

3 に答える 3

4

Pythonは、のようなUnicodeスクリプトのプロパティをまだ理解していません\p{...}

ブラケットをエスケープしているバックスラッシュを削除した後、使用しないことでバージョンが機能するはずです(使用していませんsplit()が、タイプミスだったと思います)。findall()re.split()

また、最近のコメントで述べたようにPython 3を使用していないため、おそらくこのre.UNICODEオプションを使用して、それtextが実際にUnicode文字列であることを確認する必要があります。

import re
pattern = re.compile(ur'[\u0980-\u09FF]+', re.UNICODE)
words = re.findall(pattern, text)
于 2012-04-11T09:37:35.683 に答える
-1

空白で分割できます。

>>> import re
>>> x = 'এর জন্য বুদ্ধির (Reason) প্রয়োজন নেই, প্রয়োজন নিজের'
>>> re.split('\s', x)
['\xe0\xa6\x8f\xe0\xa6\xb0', '\xe0\xa6\x9c\xe0\xa6\xa8\xe0\xa7\x8d\xe0\xa6\xaf', '\xe0\xa6\xac\xe0\xa7\x81\xe0\xa6\xa6\xe0\xa7\x8d\xe0\xa6\xa7\xe0\xa6\xbf\xe0\xa6\xb0', '(Reason)', '\xe0\xa6\xaa\xe0\xa7\x8d\xe0\xa6\xb0\xe0\xa6\xaf\xe0\xa6\xbc\xe0\xa7\x8b\xe0\xa6\x9c\xe0\xa6\xa8', '\xe0\xa6\xa8\xe0\xa7\x87\xe0\xa6\x87,', '\xe0\xa6\xaa\xe0\xa7\x8d\xe0\xa6\xb0\xe0\xa6\xaf\xe0\xa6\xbc\xe0\xa7\x8b\xe0\xa6\x9c\xe0\xa6\xa8', '\xe0\xa6\xa8\xe0\xa6\xbf\xe0\xa6\x9c\xe0\xa7\x87\xe0\xa6\xb0']
于 2012-04-11T09:37:02.423 に答える