0

我是一名初学者 python 程序员,过去我曾经了解一点 java。我有一些文本文件(土耳其语)和相应的 xml 文件,其中包含文本中连接词的偏移量。例如

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

这表示 txt 文件的 281 偏移处有一个“ama”。但是当我用 python 读取这个文件时,'ama' 在 301. 字节或者是文件中的 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 
4

1 回答 1

0

正如@Gene 所说,它是行尾标记。由于 java 应用程序是在 windows 中编写的,因此它将每个 '\n' 计为 2 个字节。但是python将它们计为1个字节。我数 '\n' 直到偏移量,然后从给定的偏移量中减去它。非常感谢您富有洞察力的评论

于 2013-03-11T23:11:21.613 回答