在Python字符串中查找UTF-8字符的索引

时间:2012-11-29 21:00:42

标签: python string unicode utf-8

我正在尝试查找外语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')

有什么我想念的吗?还是有另一种方法来解决这个问题吗?

1 个答案:

答案 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