导入CSV文件到DataFrame时出现+AC0字符问题求助
导入CSV生成DataFrame时出现
+AC0异常字符的解决方案 问题成因
+AC0是软连字符(Unicode编码U+00AD,用于标记单词换行位置的不可见特殊字符)的转义异常结果,本质是文件编码不匹配导致的解析错误,常见触发场景:
- 从Excel导出UTF-8格式CSV时,软件自动为长单词插入了软连字符标记
- 读取CSV时未指定正确编码,比如默认用
ISO-8859-1/latin-1编码读取实际为UTF-8编码的文件,软连字符被错误转义为+AC0字符串 - 网页端导出的CSV对特殊字符做URL编码转写时出错,软连字符的URL编码为
%AC0,转写异常时就会显示为+AC0
修复方法
读取阶段从根源避免
读取Excel导出的CSV时优先指定utf-8-sig编码,可直接规避大部分这类转义问题:
import pandas as pd df = pd.read_csv("你的文件存储路径.csv", encoding="utf-8-sig")
如果是国内办公软件导出的CSV,可尝试替换编码为gbk、gb18030适配。
已读入数据的批量清理
如果数据已经加载到DataFrame中,可直接批量替换清除异常字符:
# 全局替换所有+AC0字符串 df = df.replace(to_replace=r'\+AC0', value='', regex=True) # 如需彻底清除所有隐藏的软连字符,可针对字符串列匹配Unicode编码替换 df = df.apply(lambda col: col.str.replace('\u00ad', '') if col.dtype == 'object' else col)
内容的提问来源于stack exchange,提问作者Santhosh Reddy Kathi
相关产品推荐
相关产品推荐

