我正在尝试查找外语UTF-8
编码字符串中某个字符的索引(或索引)(例如字符:ش
)。
我尝试了unicode.find('ش')
,word.find(u'ش')
,word.find(u'\\uش')
以及正则表达式:re.compile(u'\\uش)
无济于事。有趣的是,在调试模式的Visual Studio(我的IDE使用IronPython)中,word.find(u'\\uش')
在变量监视窗口中返回正确的索引,但它不在实际代码中(返回index=-1
)。
我正在使用以下命令从文件中读取字符串:
file= codecs.open(file,'r','utf-8')
有什么我想念的吗?还是有另一种方法来解决这个问题吗?
答案 0 :(得分: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