You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取CSV生成Pandas DataFrame时首列列名出现\ufeff异常字符如何解决

问题原因说明

\ufeff是UTF-8的BOM(字节顺序标记)字符,通常是Windows系统导出CSV文件时默认在文件头部添加的编码标识,不属于CSV的实际内容,所以会导致首列列名识别异常。

解决方案

方案1:修改读取编码参数(最推荐)

直接将读取文件时指定的编码从utf-8替换为utf-8-sig,该编码格式会自动识别并移除文件头部的BOM标记,不需要额外修改后续逻辑。

  • 如果你使用Python内置csv模块实现LocalCsvHandler类,修改读取文件时的encoding参数即可
  • 如果你后续直接使用pandas读取,调用时添加编码参数示例:df = pd.read_csv('file_path.csv', encoding='utf-8-sig')

方案2:手动清理已读取的列名

如果暂时无法修改读取文件的编码逻辑,可以在得到OrderedDict列表后、转DataFrame前,手动清理所有键的BOM前缀,示例代码:

processed_list = []
for row in raw_ordered_dict_list:
    cleaned_row = {key.lstrip('\ufeff'): value for key, value in row.items()}
    processed_list.append(cleaned_row)
# 再将处理后的列表转为DataFrame
df = pd.DataFrame(processed_list)

方案3:预清理本地文件

如果CSV文件会被多次读取,可以在下载到本地后统一做一次BOM清理,后续读取就不需要重复处理:

with open('file_path.csv', 'r', encoding='utf-8') as f:
    content = f.read()
# 移除BOM后重新写入
if content.startswith('\ufeff'):
    content = content.lstrip('\ufeff')
    with open('file_path.csv', 'w', encoding='utf-8') as f:
        f.write(content)

内容的提问来源于stack exchange,提问作者HuLu ViCa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:15:01