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
相关产品推荐
相关产品推荐

