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

Python读取CSV文件在Linux与Windows平台结果不一致的原因及解决方法

CSV跨平台读取乱码问题成因及修复方案

问题成因

  • 编码参数不匹配:代码中指定的latin-1编码与目标CSV文件的实际编码不符。该文件存储了包含法语重音的特殊字符(如Québec中的é),实际采用UTF-8编码,多字节存储的特殊字符被单字节的latin-1逐字节解码后,就会产生ò这类乱码。
  • 跨平台表现差异的原因:Windows端显示正常属于巧合的兼容表现,大概率是Windows本地的文件被系统隐式转码为latin-1兼容编码,或是Windows控制台打印时自动做了转义适配,并非正确实现。

修复方案

  • 核心修改:将打开文件时的编码参数改为utf-8,匹配文件实际编码即可,其余逻辑无需改动:
import csv
import re

NAICS_dict_csv = {} 
with open(r'/home/mondjef/Downloads/naics-scian-2017-element-v3-eng.csv', 'r', newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    next(reader, None)
    for row in reader:
        if row[1] == '541120':
            print(row)
        if row[3] == 'Exclusion(s)':
            exclusion = re.sub('\((?:US|CAN|MEX)\)' , '', row[4])
            NAICS_dict_csv[row[1]]['exclusions'].append(exclusion)
        elif row[3] == 'Inclusion(s)':
            NAICS_dict_csv[row[1]]['inclusions'].append(row[4])
        elif row[3] == 'Illustrative example(s)':
            NAICS_dict_csv[row[1]]['examples'].append(row[4])
        elif row[3] == 'All examples':
            NAICS_dict_csv[row[1]]['all_examples'].append(row[4])
  • 兼容异常字符:如果修改编码后仍存在少量无法解码的字符,可以添加errors='replace'参数,避免程序中断,无法解码的字符会被替换为�:
with open(r'/home/mondjef/Downloads/naics-scian-2017-element-v3-eng.csv', 'r', newline='', encoding='utf-8', errors='replace') as f:
  • 跨平台路径兼容:如果需要在多系统运行同一份代码,可以用os.path模块构造路径,避免硬编码的路径分隔符在不同系统下失效。

内容的提问来源于stack exchange,提问作者Jeff M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:03