文字列 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ'からいくつかのUnicodeシンボルを削除する必要があります
確かにここに存在することは知っています。私は試した:
re.sub('([\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+)', '', 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ')
しかし、それは機能しません。文字列は変わりません。何が間違っていますか?
python 2.xまたは3.0を使用していますか?
2.xを使用している場合は、「u」を使用して、正規表現文字列をUnicodeエスケープ文字列にしてください。正規表現であるため、正規表現文字列を「r」で生の文字列にすることをお勧めします。また、パターン全体を括弧で囲むことは不要です。
re.sub(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+', '', ...)
http://docs.python.org/tutorial/introduction.html#unicode-strings
編集:
また、Unicode正規表現にre.UNICODE/re.U /(?u)フラグを使用することをお勧めしますが、このパターンは\ wや\ bなどの文字クラスエイリアスにのみ影響します。影響を受ける。
nicode 文字列を使用します。 re.UNICODE フラグを使用します。
>>> myre = re.compile(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+',
re.UNICODE)
>>> myre
<_sre.SRE_Pattern object at 0xb20b378>
>>> mystr = u'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ'
>>> result = myre.sub('', mystr)
>>> len(mystr), len(result)
(38, 22)
>>> print result
بسم الله الرحمن الرحيم
記事を読むJoel Spolskyと呼ばれる すべてのソフトウェア開発者が絶対的かつ積極的にUnicodeと文字セットについて知っておくべき絶対的な最低限(言い訳なし!