最近找数据,下载了个csv文件,用pandas打开出现乐编码错误,之前遇到过没注意,这次记录一下
bp_data = pd.read_csv("399300.csv")
错误原因:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte
解决方法,看csv里面的数据是什么类型的。直接用二进制读csv,看能否解码就知道了
f = open("399300.csv","rb")#二进制格式读文件
i = 0
while True:
i += 1
print(i)
line = f.readline()
if not line:
break
else:
try:
# print(line)
# print(line.decode('utf8'))
line.decode('utf8')
#为了暴露出错误,最好此处不print
except:
print(str(line))
结果如下:
可以看到很多的字节编码都是无法解码的,对比csv里的数据,第一行是中文,下面的虽说是数据,估计也是和中文一样不支持
的数据类型。
解决方法是强制转编码
df = pd.read_csv('399300.csv', encoding = 'gb2312')
成功读取