博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python使用pd.read_csv(),出现错误UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc8
阅读量:2394 次
发布时间:2019-05-10

本文共 1368 字,大约阅读时间需要 4 分钟。

问题描述:

在使用pd.read_csv()读取表格数据时,有"encoding="参数用来描述表格数据采用的编码方式,比较常用的有utf-8,但有时候还是会报错。示例如下:

import pandas as pdfile_path = "oracle_log.csv"data = pd.read_csv(file_path, encoding='utf-8')

报错内容为:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte

说明’utf-8’ 不能解码0xc8。

但如何确定表格的编码方式呢?

解决办法:

表格的编码方式存在两种情况,一种是表格整体以一种方式编码,另一种是表格中存在多种编码方式。

对于情况一:

使用记事本打开csv文件,红框所示即csv文件的编码方式。

在这里插入图片描述

则更改为data = pd.read_csv(file_path, encoding='ANSI')

一般地,测试无报错,则说明表格整体以单一方式编码。

对于情况二:

特殊地,上述情况仍然有报错。则测试是否存在多种编码方式:

f = open(file_path,"rb")# 二进制格式读文件i = 0while True:    i += 1    line = f.readline() # 按行读取    if not line:        break    else:        try:            line.decode('ANSI')        except: # 打印出不能通过'ANSI'方式解码的数据行            print(i)            print(str(line))

输出内容示例:

38999  # 代表csv文件的第38999行b'36:50.5,59107,1521,6,49:35.9,136.6.5.43,192.168.181.198,ODSQUERY,\xff\xff\xff\xff\xff\xff,,chenwenfeng,,PLSQLDev,,,,,,,,,,\r\n' # 代表不能通过'ANSI'方式解码的数据行内容

如何确定报错的这一行数据的编码方式:

使用python库chardet检测编码方式(对单行数据检测比较有效)

import chardet # import失败则 pip install chardeterror_line = b'36:50.5,59107,1521,6,49:35.9,136.6.5.43,192.168.181.198,ODSQUERY,\xff\xff\xff\xff\xff\xff,,chenwenfeng,,PLSQLDev,,,,,,,,,,\r\n'print(chardet.detect(error_line))

输出内容:

{
'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}

经测试,对上述报错行使用error_line.decode('ISO-8859-1'),无报错。

转载地址:http://fuwob.baihongyu.com/

你可能感兴趣的文章
程序员5年工作经验,因频繁跳槽被面试官压工资!
查看>>
职场中神奇的程序员,却常常被人说“太直”,这是什么样的思维?
查看>>
@初学编程的朋友们,如果你能学得这些方法,学习将会更快一步!
查看>>
C/C++编程笔记:C/C++ 的编译和链接
查看>>
C/C++编程知识分享:C++四种强制转换,教你多种类型转换方式!
查看>>
全球最厉害的 14 位程序员,你知道几位呢?最厉害的研究出了它!
查看>>
C/C++基础语法复习(二):C++ 面向对象编程,你需要知道的点
查看>>
简述 C语言 有和 C++ 的基本区别,你真的懂吗?(新手面试必学)
查看>>
刚进职场的程序员,请万分珍重你的第一份工作,不要轻易辞职!
查看>>
C/C++之QT攻略——在QT中容易遇到的那些坑,千万别踩了!
查看>>
@90后程序员,“颜值即正义”的现在,程序员应该如何更新穿搭?
查看>>
程序员须知:必须建立个人知识库,它的重要性你需要了解一下!
查看>>
C/C++知识分享番外:如何申请一个腾讯地图用户Key?
查看>>
程序员提高编程技术最有效的一件事?了解一下,迅速提升自己!
查看>>
程序员想找工作怎么办?如果记住这一点,不怕找不到好工作!
查看>>
程序员找工作时,大公司 VS 小公司,应该如何做出正确的选择?
查看>>
适合编写C语言代码的编程软件有哪些?大学生赶紧行动起来!
查看>>
即将步入2020年,程序员如何在新的一年更进一步?你需要这样做
查看>>
编程萌新注意:别再这样问问题了!学会这样快速定位错误内容
查看>>
C/C++编程笔记:经典游戏植物大战僵尸游戏辅助,源码送上
查看>>