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

Python3 CSV编码问题:特殊字符写入后显示异常求助

解决CSV文件特殊字符(²、±)编码异常问题

首先,我能get到你遇到的困扰——更新CSV后特殊字符显示乱码,这大概率是读写编码不一致或者写入时没指定正确编码导致的。咱们一步步来把这个问题搞定:

1. 修复代码中的核心问题

你给出的代码片段有语法小错误(比如with open结尾缺冒号、delimite拼写错误),更关键的是写入文件时必须明确指定UTF-8编码,否则系统默认编码会破坏特殊字符。下面是修正后的完整代码:

import csv

new_rows = []

# 读取CSV:指定UTF-8编码,加newline=''避免读取时解析异常
with open('file_1.csv', 'r', encoding='utf-8', newline='') as f1:
    reader = csv.reader(f1, delimiter=',')  # 修正delimiter拼写
    for row in reader:
        # 给第二列添加文本(注意列表索引从0开始,第二列是index=1)
        if len(row) >= 2:
            row[1] += " 你要添加的新文本"
        new_rows.append(row)

# 写入CSV:必须指定UTF-8编码,同样加newline=''避免多余空行
with open('file_1_updated.csv', 'w', encoding='utf-8', newline='') as f2:
    writer = csv.writer(f2, delimiter=',')
    writer.writerows(new_rows)

2. 关键注意事项

  • 读写统一用UTF-8编码:读取和写入时都明确写encoding='utf-8',别依赖系统默认编码(比如Windows下的GBK),不然特殊字符肯定会乱码。
  • 加newline=''参数:这是csv模块官方推荐的写法,既能避免写入时出现多余空行,还能保证跨平台的兼容性。
  • 如果用Excel打开还是乱码:Excel默认会用系统编码识别CSV,你可以两种方式解决:
    • 打开Excel后,通过「数据」>「自文本/CSV」导入文件,手动选择UTF-8编码;
    • 写入时改用utf-8-sig编码(带BOM头),这样Excel能自动识别:encoding='utf-8-sig'

3. 快速验证特殊字符

你可以先用测试行验证效果,确保特殊字符不会丢失:

# 测试示例行
test_row = ["Some info", "Cell with special characters (², ±)", "Some more info"]
test_row[1] += " - 更新后文本"
print(test_row[1])  # 正常输出应该保留²和±,不会乱码

按照上面的步骤处理后,更新后的CSV里的特殊字符就能正常显示啦!

内容的提问来源于stack exchange,提问作者Wessel Jespers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:49:25