UnicodeDecodeError: 'gbk' codec can't decode byte 0xfa in position 4669: illegal multibyte sequence
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 5: invalid start byte
with open('进线汇总20201211.csv',encoding='utf8') as f:
t = f.readlines()
print(t)
运行上述代码,在编码设置中,无论切换为 utf8,还是 gbk 都报错,原因可能是文件中 gbk,utf8 混用,还有一种是源文件编码是带有 BOM 的 utf8.
解决:
这样以逗号分隔的前提是,假如一行数据中,每一个字段的值中都不包含逗号的,如果有一个字段包含了逗号,那原本分隔的列数假如是 10,会变成 11 列,与源数据格式冲突了
打开文件,读取时,忽略不能解码的,读取成功后,另存为新的文件,新的文件就不会存在编码问题了,可运行下面代码
import csv
with open('进线汇总20201211.csv',encoding='gbk',errors='ignore') as f:
t = f.readlines()
with open('进线汇总20201211_clear.csv','w+',encoding='gbk',newline='') as f:
wr = csv.writer(f)
for l in t:
l = l.split(',')
wr.writerow(l)