最近处理一堆txt文件时,各种编码错误,意识到主要是文件的编码格式不统一造成的原因。使用chardet进行检测:
with open(file_path, 'rb') as f:
s = f.read()
chatest = chardet.detect(s)
print(chatest)
检测结果如下:
image.png
每一个文件的检测结果是一个字典,值分别是编码格式,置信度(又多大的概率属于该编码格式),语言类型。
但是仍然有部分文件,使用chatest判断出的的编码格式open,也会报UnicodeDecodeError 问题,这往往是因为该文件内有部分字符无法解码,可以使用errors参数忽略该信息
import codecs
f = codecs.open(file_path, 'r', encoding = 'GB2312', errors='ignore')
网友评论