前言:
在我使用pandas模块对csv文件读取时报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 0: invalid continuation byte
在查找资料后,发现大部分都不怎么适用,所以在这里做个记录。如果你在读取文件时(csv,table等等)出现类似错误,可以参照如下。
分析:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte
是两类python编码中最常见的错误,一般都是通过修改编码来解决(认真脸)。
所以请认真看清楚自己的错误区别其他的在哪,例如我的是:
byte 0xd5 in position 0
那么我就用这个去查一下,得到资料:
win默认gbk作为系统内部编码,在命令行cosole调试时使用的是内部编码
最后修改代码:
dataset = pd.read_csv(file,encoding='GBK')
就是说编码解码的问题很多,但都不怎么相同的。看清不能解码的那个字节(即超出了utf-8的表示范围了),然后显示的增加编码方式encoding='GBK'
。
这里的GBK是对应我的这个错误,小伙伴们自己的可以自己找到喔。
如果还不能解决:
使用python的时候经常会遇到文本的编码与解码问题,其中很常见的一种解码错误如题目所示,下面介绍该错误的解决方法,将‘gbk’换成‘utf-8’也适用。
(1)、首先在打开文本的时候,设置其编码格式,如:open(‘1.txt’,encoding=’gbk’);
(2)、若(1)不能解决,可能是文本中出现的一些特殊符号超出了gbk的编码范围,可以选择编码范围更广的‘gb18030’,如:open(‘1.txt’,encoding=’gb18030’);
(3)、若(2)仍不能解决,说明文中出现了连‘gb18030’也无法编码的字符,可以使用‘ignore’属性进行忽略,如:open(‘1.txt’,encoding=’gb18030’,errors=‘ignore’);
(4)、还有一种常见解决方法为open(‘1.txt’).read().decode(‘gb18030’,’ignore’)
最后:
有用的话点个赞呗