修改Excel保存的CSV文件后pd.read_csv报错与俄文字符乱码问题求助
俄文CSV乱码及读取报错问题解决方案
核心问题根源
你遇到的两个问题均为Windows版Excel保存CSV的默认配置不兼容标准格式导致:
- 分隔符解析报错:俄语/东欧区域的Windows系统默认CSV分隔符为分号
;,你手动选择逗号保存时,包含特殊字符的字段会被Excel自动拆分/加引号,导致字段数不匹配报错 - 俄文乱码&UTF-8解码报错:Excel默认保存CSV采用系统ANSI编码(俄语区对应
cp1251西里尔编码,非UTF-8),直接用UTF-8解码自然会抛出字节不匹配错误
可用解决方案
方案1:直接读取现有文件无需重存
通过指定正确的编码和分隔符即可直接读取,无需修改源文件:
- 直接指定编码读取:
import pandas as pd # cp1251为俄语区Windows默认ANSI编码,适配西里尔字符 df = pd.read_csv('修改后的文件路径.csv', sep=';', encoding='cp1251')
- 不确定编码时可先检测编码再读取:
# 先安装编码检测工具:pip install chardet import chardet with open('修改后的文件路径.csv', 'rb') as f: detect_result = chardet.detect(f.read()) # 输出检测到的编码,直接填入pd.read_csv的encoding参数即可 print(detect_result['encoding'])
读取完成后可导出为标准UTF-8格式方便后续使用:
df.to_csv('标准UTF-8编码数据集.csv', encoding='utf-8', sep=',', index=False)
方案2:Excel导出时配置正确格式从根源避免问题
后续使用Excel修改CSV时,不要用默认CSV保存选项,按以下步骤操作:
- 点击「文件」→「另存为」,保存类型选择CSV UTF-8 (逗号分隔) (*.csv)
- 不要选择默认的「CSV (逗号分隔) (*.csv)」选项,该选项保存的是ANSI编码
- 导出后直接用默认参数即可正常读取:
df = pd.read_csv('正确导出的文件路径.csv')
避坑提示
- 非必要不建议用Excel修改包含西里尔、中文等非西欧字符的CSV文件,Excel的CSV编码、分隔符逻辑与跨平台标准不兼容,容易出现各类问题,可改用VS Code、Notepad++等文本编辑器修改,保存时可手动指定编码为UTF-8
- 必须使用Excel时,保存环节一定要选择带UTF-8标识的CSV格式,不要使用默认CSV格式
内容的提问来源于stack exchange,提问作者hyper-cookie
相关产品推荐
相关产品推荐

