Excel 保存文件为 csv 格式时,读取时出现存在 BOM 问题
Excel 保存文件为 csv 格式时,读取时出现存在 BOM 问题
问题描述
当我们使用 Excel 保存文件为 CSV utf-8 格式时,使用如下代码读取 .csv 文件时
1
2
3
4
5
6
import csv
with open(file_path, "r", encoding='utf-8') as f:
data = list(csv.reader(f))
print(data)
会发现读取的字符串中出现 [['\ufeffname', 'age', 'city'], ...] 这种情况,即第一个单元格字符串前面出现 \ufeff
解决方法
出现这种情况的原因是因为当我们使用 Excel 保存 CSV 文件时,Excel 会自动在文件开头添加一个字节顺序标记(BOM, Byte Order Mark),即前面提到的 \ufeff。
如果想要解决这个问题,有如下两种解决方法
修改打开文件的编码方式为
utf-8-sig1
with open(file_path, "r", encoding='utf-8-sig') as f:
使用
pandas库读取 CSV 文件1 2 3 4
import pandas as pd df = pd.read_csv(file_path) print(df)
This post is licensed under CC BY 4.0 by the author.