使用Python csv模块writerow时字符被拆分,如何将列表项整行写入CSV?
问题分析与解决方案
你的代码存在两个关键问题,导致CSV文件输出不符合预期:
- 重复打开文件:
with语句已经自动创建并管理文件对象f,后续的f = open('final_data.csv', "w+")属于多余操作,会覆盖原文件句柄,还可能引发资源泄漏或写入异常。 writerow参数错误:csv.writer.writerow()要求传入可迭代序列(如列表、元组),如果直接传字符串,它会将字符串的每个字符视为独立列,最终导致每行字符被逗号拆分。
修正后的代码
方式一:逐行写入
import csv final_data = ['0.0267166', '0.0534331', '0.0801497', '0.106866'] with open('final_data.csv', 'w', newline='') as f: writer = csv.writer(f) for item in final_data: writer.writerow([item]) # 将单个字符串包装为列表传入
方式二:批量写入(更高效)
import csv final_data = ['0.0267166', '0.0534331', '0.0801497', '0.106866'] with open('final_data.csv', 'w', newline='') as f: writer = csv.writer(f) # 生成包含单个元素的序列迭代器,批量写入 writer.writerows([item] for item in final_data)
修正说明
- 移除了重复的
open调用,依赖with语句自动完成文件的打开与关闭,避免资源问题。 - 将每个字符串元素包装进列表
[item],确保writerow把整个字符串作为一行的单个单元格写入,不再拆分字符。
内容的提问来源于stack exchange,提问作者Pol Barreiro Font
相关产品推荐
相关产品推荐

