java和python中的字符串偏移量

时间:2013-03-11 13:02:29

标签: java python encoding

我是一名入门python程序员,过去我曾经认识过一点java。 我有一些文本文件(土耳其文)和相应的xml文件,其中包含偏移数 文本中的连词。例如

-<Conn> 
    -<Span> 
        <Text>ama</Text> 
        <BeginOffset>281</BeginOffset> 
        <EndOffset>284</EndOffset> 
    </Span> 
</Conn>

这表示txt文件中的281偏移处存在'ama'。但是当我用python读取这个文件时, 'ama'位于301. byte或文件中的272.字符。据我所知,java应用程序在读取txt文件时没有提及任何编码。我尝试用unicode,UTF8等读取文件...... 我需要从这些偏移中找到一种方法来纠正文件中的位置。我的猜测,问题是由于土耳其语字符(在不同的编码中可能需要不同的字节数),但我不能理解它。 任何建议都对我非常好。 谢谢 修改 我在python3.3中使用了以下代码:

f = open(path, encoding='utf-8')
text = f.read()
text[272:275] # returns 'ama' but it should be text[281:284]
ibbyte = text.encode(encoding='utf-8')
inbytes[292:295] # returns 'ama' but this is also incorrect 

1 个答案:

答案 0 :(得分:0)

正如@Gene所说它是行尾标记。由于用Windows编写的java应用程序,它将每个'\ n'计为2个字节。但python将它们计为1个字节。我计算'\ n'直到偏移数,并从给定的偏移数中减去它。 非常感谢您的深刻见解