Python追加CSV为UTF-8格式异常,如何实现Excel逐行追加?
解决CSV追加时格式错乱并实现Excel新行追加的方法
核心问题分析
- newline参数错误:原代码中
newline='\n'的写法不符合csv模块要求,会导致不同系统下换行符处理异常,引发格式错乱。 - 数据格式不匹配:
csv.writer.writerow()要求传入可迭代对象(如列表),若直接传入单个字符串,会被拆分为单个字符分散到不同单元格,造成格式混乱。
修正方案
1. 修正代码参数与数据格式
使用csv模块官方推荐的newline=''设置,并确保写入数据为列表格式,保证整段文本作为单个单元格:
import csv # 将待写入文本包装成列表,避免被拆分 transtext = ["Problem in new ITR portal, Finance Minister told Infosys- New Delhi Finance Minister Nirmala Sitharaman took the help"] with open('data.csv', 'a', newline='', encoding='utf-8') as fd: writer = csv.writer(fd) writer.writerow(transtext)
2. 兼容Excel的编码优化
若Excel打开CSV仍出现乱码,可将编码改为utf-8-sig(带BOM头),让Excel自动识别UTF-8编码:
with open('data.csv', 'a', newline='', encoding='utf-8-sig') as fd: writer = csv.writer(fd) writer.writerow(transtext)
3. 额外注意事项
- 确保已有CSV文件的编码与写入时使用的编码一致(均为UTF-8或utf-8-sig),避免编码冲突导致乱码。
- 若需批量追加多条数据,可使用
writerows()方法传入二维列表,一次性写入多行。
内容的提问来源于stack exchange,提问作者jeniffer
相关产品推荐
相关产品推荐

