2013-06-29 60 views
1
f = open('C://Users//fireqwert7//Documents//tesis.docx') 


sts='' 

for line in f: 
    sts += line 

print(sts) 

f.close() 

給出錯誤試圖打開文件時將unicodedecoderror

Traceback (most recent call last): 
    File "C:\Python32\regularexpressions.py", line 11, in <module> 
    for line in f: 
    File "C:\Python32\lib\encodings\cp1252.py", line 23, in decode 
    return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 66: character maps to <undefined> 

如果可以我會很感激,如果你能告訴我爲什麼會發生,以及如何避免下一次。我討厭使用我不明白的東西。

+2

這幾乎肯定不會給你任何可用的輸出。 –

+1

你想達到什麼目的?你正在閱讀一個docx文件(這是壓縮的XML),就好像它是一些編碼的文本文件。 –

回答

0

錯誤是說你打開的文件中的某個地方(實際上位置66),有一個unicode代碼實際上並沒有映射到真實的字符。所以基本上,在你的文件的機器代碼的某個地方,一些位被搞亂了,現在它們所包含的字節不再代表unicode編碼中的一個字母。

編輯:進一步的沉思(和托馬斯指出),這是因爲您試圖打開的文件是一個.docx,它不是unicode編碼。它們以專有的Microsoft格式編碼。我不確定是否有方法在python中打開一個並獲得可讀的字符。

如果你想在python中使用這個文檔的內容,你需要將它轉換(使用「docx到unicode轉換器」來查找一些結果),或者將文本複製並粘貼到純文本中文件。

+2

docx是壓縮的XML。試圖對待內容爲(系統相關)編碼unicode必然會失敗... –

+0

謝謝,這有很大的幫助。我很感激。 – user2350459

+0

我如何知道它是否以unicode編碼? – user2350459

相關問題