2017-03-01 91 views
-2

我想讀取dictionary_format_file.txt,但我不斷收到錯誤信息。UnicodeDecodeError:'ascii'編解碼器無法解碼位置81201中的字節0xe2:序號不在範圍內(128)

我閱讀其他帖子,他們是完全有道理的,但我仍然無法解決我的問題。

任何幫助表示讚賞。

import ast 

path = '/Users/xyz/Desktop/final/' 
filename = 'dictionary_format_text_file.txt' 

with open((path+filename), 'r') as f: 
    s=f.read() 
    s=s.encode('ascii', 'ignore').decode('ascii') 

錯誤:

Traceback (most recent call last): 
    File "/Users/xyz/Desktop/final/boolean_query.py", line 347, in <module> 
    s=s.encode('ascii', 'ignore').decode('ascii') 

    File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/encodings/ascii.py", line 26, in decode 
    return codecs.ascii_decode(input, self.errors)[0] 
builtins.UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 81201: ordinal not in range(128) 
+1

可能重複::「ASCII」編解碼器無法編碼的字符U「\ XA0」在位置20:可以很容易地通過擺脫冗餘encode的避免它序數不在範圍內(128) ](http://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20) – DyZ

+0

顯然你沒有很努力地搜索。 @DYZ和我都在你的帖子的4分鐘內找到它。 –

+1

注意:您使用了'with'語句,因此調用'f.close()'是冗餘/錯誤的。 「with」語句的要點在於,它確保在塊被退出時資源被釋放。 – ShadowRanger

回答

2

f.read返回一個字節的字符串,而不是一個Unicode字符串。當您嘗試使用encode時,Python 2會嘗試使用編碼解碼器'ascii'首先對其進行解碼,並且錯誤處於打開狀態(Python 3會在未嘗試解碼的情況下提供錯誤)。隱藏的decode會產生錯誤。 [UnicodeEncodeError的

s=s.decode('ascii', 'ignore') 
相關問題