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