re
Python 2.7.3 でモジュールを Unicode でエンコードされた Devnagari テキストで使用しようとしています。コードの先頭に追加from __future__ import unicode_literals
したので、すべての文字列リテラルは Unicode オブジェクトにする必要があります。
ただし、Python の正規表現マッチングで奇妙な問題が発生しています。たとえば、この名前を考えてみましょう:「किशोरी」。これは、ユーザーの 1 人が入力したヒンディー語の (つづりが間違っている) 名前です。ヒンディー語の読者なら誰でも、これを単語として認識するでしょう。
以下は、当然のことながら、一致を返します。
re.search("^[\w\s][\w\s]*","किशोरी",re.UNICODE)
しかし、これはしません:
re.search("^[\w\s][\w\s]*$","किशोरी",re.UNICODE)
いくつかの詳細な調査により、この文字列の文字 0915 (क) の 1 文字だけが \w 文字クラスに分類されると認識されることが明らかになりました。「派生コアプロパティ」のUnicode文字データベースファイルには、この文字列の他の文字(すべてをチェックしていません)がアルファベット文字としてリストされているため、これは正しくありません-実際にそうです。
これは Python の実装の単なるバグですか? Devnagari のすべての英数字を文字範囲として手動で定義することでこれを回避できますが、それは面倒です。それとも私は何か間違ったことをしていますか?