Python如何将两个列表按指定逗号分隔格式写入文本文件
解决方案
你遇到的问题核心是csv.writer的writerows方法要求传入的每个元素是待写入当前行所有字段的可迭代对象,你之前直接传入zip(b,c)时,每个元素是(4, [1,2,3])这类组合,子列表会被识别为单个字段,csv模块自动给带逗号的列表字符串加了引号,只要把对应子列表和b的元素展开拼接为单行的字段集合即可,以下是几种不同实现方案:
方法1:生成器表达式解包拼接(无需额外依赖,性能最优)
直接在传入writerows时解包每对子元素,不需要提前构造完整的新列表,内存占用低:
import csv c = [[1,2,3],[4,5,2]] b = [4,8] with open("out.txt", "w", newline="") as f: writer = csv.writer(f) # 每一行的字段由b的单个元素 + c对应子列表的所有元素组成 writer.writerows((b_item, *c_item) for b_item, c_item in zip(b, c))
方法2:手动拼接字符串写入(不需要导入csv模块)
如果场景简单不需要处理复杂的csv转义规则,直接手动拼接行内容写入即可:
c = [[1,2,3],[4,5,2]] b = [4,8] with open("out.txt", "w") as f: for b_item, c_item in zip(b, c): # 把所有元素转成字符串后用逗号拼接,加换行符 line = ','.join(map(str, [b_item] + c_item)) + '\n' f.write(line)
方法3:使用pandas写入(适合正在处理结构化数据的场景)
如果你已经在用pandas做数据处理,可以直接构造DataFrame后导出:
import pandas as pd c = [[1,2,3],[4,5,2]] b = [4,8] # 构造每行的完整数据 df = pd.DataFrame([[b_item] + c_item for b_item, c_item in zip(b, c)]) df.to_csv("out.txt", header=False, index=False)
内容的提问来源于stack exchange,提问作者ous
相关产品推荐
相关产品推荐

