utf-8'编解码器无法解码位置0的字节0xb5:无效的起始字节

时间:2019-03-09 10:44:19

标签: python csv utf-8

我正在尝试使用此功能将多个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:无效的起始字节

这是TraceBack:

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

谢谢。

5 个答案:

答案 0 :(得分:0)

首先,您需要了解CSV文件使用的编码类型。您可以尝试使用https://docs.microsoft.com/en-us/windows/desktop/Multimedia/mci来预测CSV文件中使用的编码类型。使用以下命令可以轻松安装Chardet:

:e filename

安装chardet后,您可以使用以下命令行来预测CSV文件的编码:

pip install chardet

输出将是这样的:

chardet file_name.csv

然后检查CSV文件的编码,然后在代码中更改以下行:

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

收件人:

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

您可以检查可用的Chardet: The Universal Character Encoding Detector。希望这可以解决您的问题。

答案 1 :(得分:0)

我会尝试:

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

答案 2 :(得分:0)

尝试指定以下内容:

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

latin-1编码很神奇-它永远不会失败。看看你得到什么。 如果这足够好-那就去吧。

如果没有,则必须找出CSV文件实际使用的编码方式。您可以尝试许多不同的编码,直到答案看起来还可以。

答案 3 :(得分:0)

如我所见,大熊猫编码已经有了很多答案。

这是另一种方法:

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

答案 4 :(得分:0)

这对我有用

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