2

UTF-8外国語でエンコードされた文字列 (たとえば、文字: )内の特定の文字のインデックス (またはインデックス) を見つけようとしていますش

unicode.find('ش')word.find(u'ش')word.find(u'\\uش')および正規表現も試しましたが、re.compile(u'\\uش)役に立ちませんでした。面白いことに、デバッグ モードの Visual Studio (IronPython を使用する私の IDE) ではword.find(u'\\uش')、変数ウォッチ ウィンドウで正しいインデックスが返されますが、実際のコードでは返されません ( が返されますindex=-1)。

次のコマンドを使用して、ファイルから文字列を読み取っています。

file= codecs.open(file,'r','utf-8')

足りないものはありますか?または、これにアプローチする別の方法はありますか?

4

1 に答える 1

2

ファイルの読み取りに使用codecsすると、UTF-8 ではなく、内部の Unicode 文字列表現になります。これは、プログラム内の Unicode リテラルと完全に互換性があるはずです。

>>> line=u'abcش'
>>> line.find(u'ش')
3

編集:両方の文字列がIDEから入力されたため、以前のテストは誤解を招く可能性があります。より良い例を次に示します。

>>> f = codecs.open(r'c:\temp\temp.txt', 'r', 'utf-8-sig')
>>> line = f.readline()
>>> print line
This is a test.ش

>>> line.find(u'\u0634')
15
于 2012-11-29T21:26:07.373 に答える