2013-03-11 55 views
0

我是一名初學者python程序員,過去我曾經知道一些java。 我有一些文本文件(土耳其語)和相應的xml文件,其中包含偏移號 文本中的連接詞。例如java和python中的字符串偏移量

-<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 
+1

請顯示您用於打開和閱讀文件的代碼。 – 2013-03-11 13:06:17

+2

字節不總是等於字符... – vikingsteve 2013-03-11 13:11:41

+0

另一個區別可能是行尾標記。在Windows中,它們是2個原始字節。 – Gene 2013-03-11 13:28:53

回答

0

爲@Gene說,這是最終的線標記。自Windows應用程序編寫以來,它將每個'\ n'計數爲2個字節。但python將它們計爲1個字節。我計算'\ n'直到偏移號碼並從給定的偏移號碼中減去它。 非常感謝您的寶貴意見

相關問題