在使用Python 3中时,我们会遇到两种主要的文本数据类型。一个是字符串,默认是。另一个类型是字节,可以把一个字符串转换成指定的字节编码。
str.encode("utf-8", errors="replace")
str.decode("utf-8")
读取文件内容时的解码问题
有时在使用read_csv
方法时,会出现如下的报错,说明无法使用utf-8解码
使用chardet模块
对于未知编码的bytes
,要把它转换成str
,需要先“猜测”编码。猜测的方式是先收集各种编码的特征字符,根据特征字符判断,就能有很大概率“猜对”。
记得先导入chardet模块
import chardet
检测出的编码是Windows-1252,注意到还有个confidence字段,表示检测的概率是0.73(即73%)。
PS
也会出现检测匹配概率为100%,却依然无法解码的情况
说明样本数量还不够,不足以代表整体的编码特征。我直接加到了十万,检测文件的前十万个字节
说句题外话,在《赤裸裸的统计学》一书中提到了样本容量的重要性,容量越大越好。从上面这个问题中足以见得。
保存utf-8编码文件
在Python中,utf-8是标准编码方式,因此默认保存utf-8编码文件
data.to_csv("xxxx.csv")