1.python读取一个csv文件,报错:
with open('时政测验.csv','r') as f:
错误信息:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 0: invalid continuation byte
2.解释:
这篇文章是windows创建的,使用的是gbk编码。
而我的mac系统默认编码是utf-8:
(mac终端,执行locale命令,查看默认编码)
2021-12-25 ➤ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
所以python读取的时候,如果不指定编码,就会报上面错误。
3.修改:
读取时候,加上:,encoding='gb18030'
with open('时政测验.csv','r',encoding='gbk') as f:
4.再啰嗦一下的解释
可以简单理解,一篇文章存储在计算机里,最终都是二进制形式。
比如一个汉字:你好:
gbk可能这样存储:01010111 01010111
utf-8可能这样存储:11011001 11011001 11011001
你的程序运行在mac上,默认的编码是mac的编码utf-8,而这篇文章是windows创建的,使用的是gbk编码。
所以你的程序不认识文章里的字,所以指定一下用gbk来读取就可以了。
5.关于gbk和utf-8
Python小镇 -- 非常详细的字符编码讲解,ASCII、GB2312、GBK、Unicode、UTF-8等知识点都有
Python小镇,讲的很好: