我是一名入门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
答案 0 :(得分:0)
正如@Gene所说它是行尾标记。由于用Windows编写的java应用程序,它将每个'\ n'计为2个字节。但python将它们计为1个字节。我计算'\ n'直到偏移数,并从给定的偏移数中减去它。 非常感谢您的深刻见解