簡體   English   中英

utf-8' 編解碼器無法解碼位置 0 中的字節 0xb5:起始字節無效

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

我正在嘗試使用此功能將多個 CSV 文件合並為一個:

import glob

path = r'/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data' 
all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

但我收到此錯誤:“utf-8”編解碼器無法解碼位置 0 中的字節 0xb5:起始字節無效

這是回溯:

   8 for filename in all_files:
   ---->  9     df = pd.read_csv(filename, index_col=None, 
   header=0)
   10     li.append(df)
   11 

感謝你。

嘗試指定這個:

df = pd.read_csv(filename, index_col=None, header=0, encoding='latin-1')

latin-1編碼很神奇——它永遠不會失敗。 看看你得到了什么。 如果這足夠好 - 那么你去。

如果沒有,您必須找出 CSV 文件實際使用的編碼。 您可以嘗試多種不同的編碼,直到答案看起來不錯。

正如我所看到的,已經有很多關於 Pandas 編碼的答案。

這是另一種方法:

with open(file_source, encoding="utf8", errors='ignore') as file:
    # Your code goes here

首先,您需要知道 CSV 文件使用的編碼類型。 您可以嘗試使用Chardet:通用字符編碼檢測器來預測 CSV 文件中使用的編碼類型。 Chardet 可以使用以下方法輕松安裝:

pip install chardet

安裝 chardet 后,您可以使用命令行來預測您的 CSV 文件的編碼:

chardet file_name.csv

輸出將是這樣的:

file_name.csv: UTF-8-SIG with confidence 1.0

然后檢查 CSV 文件的編碼,然后更改代碼中的以下行:

df = pd.read_csv(filename, index_col=None, header=0)

到:

df = pd.read_csv(filename, index_col=None, header=0, encoding='utf-8')

您可以檢查python 支持的可用編碼 希望這可以解決您的問題。

我會嘗試:

pd.read_csv(filename, index_col=None, header=0, encoding='utf-8') #OR
pd.read_csv(filename, index_col=None, header=0, encoding='latin1')

這對我有用

pd.read_csv(filename,encoding = 'unicode_escape')

暫無
暫無

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

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