簡體   English   中英

UnicodeDecodeError:“utf-8”編解碼器無法解碼 position 35 中的字節 0x96:無效的起始字節

[英]UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 35: invalid start byte

我是 Python 的新手,我正在嘗試使用以下腳本讀取 csv 文件。

Past=pd.read_csv("C:/Users/Admin/Desktop/Python/Past.csv",encoding='utf-8')

但是,出現錯誤“UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 35: invalid start byte”,請幫助我了解這里的問題,我在腳本中使用了編碼認為它會解決錯誤。

發生這種情況是因為您選擇了錯誤的編碼。

由於您正在使用 Windows 機器,只需更換

Past=pd.read_csv("C:/Users/.../Past.csv",encoding='utf-8') 

Past=pd.read_csv("C:/Users/.../Past.csv",encoding='cp1252')

應該解決問題。

使用此解決方案,它將刪除(忽略)字符並返回沒有它們的字符串。 僅當您需要剝離它們而不是轉換它們時才使用它。

with open(path, encoding="utf8", errors='ignore') as f:

使用errors='ignore'你只會丟失一些字符。 但是如果您不關心它們,因為它們似乎是源自連接到我的套接字服務器的客戶端的錯誤格式和編程的額外字符。 然后它是一個簡單的直接解決方案。 參考

嘗試使用:

pd.read_csv("Your filename", encoding="ISO-8859-1")

我從某個網站解析的代碼被轉換為這種編碼,而不是標准的默認 UTF-8 編碼。

以下對我來說非常有效:

encoding = 'latin1'

這是一個老問題,但在搜索此錯誤的解決方案時出現。 所以我想為所有仍然偶然發現這個線程的人回答。 在傳遞正確的編碼參數值之前,可以檢查文件的編碼。 要獲得編碼,Windows 中的一個簡單選項是在 Notepad++ 中打開文件並查看編碼。 然后可以在python 文檔中找到 encoding 參數的正確值。 查看這個問題和 stackoverflow 上的答案,了解有關獲取文件編碼的不同可能性的更多詳細信息。

使用下面的代碼對我有用:

with open(keeniz_dir + '/world_cities.csv',  'r', encoding='latin1') as input:

除非您確定文件編碼,否則不要傳遞編碼選項。 默認值 encoding=None 將 errors="replace" 傳遞給調用的 open() 函數。 編碼錯誤的字符將被替換,然后您可以找出正確的編碼或僅使用生成的 Dataframe。 如果提供了錯誤的編碼,pd 會將 errors="strict" 傳遞給 open() 並在編碼不正確時獲取 ValueError。

df = pd.read_csv( "/content/data.csv",encoding='latin1')

只需添加 ,encoding='latin1' 即可

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM