求助:Python多列表写入CSV仅输出一行的问题解决
问题解决:多长度列表导出CSV仅一行的问题
问题原因
你当前使用的zip(*export)会以所有列表中最短的那个长度作为迭代终止条件,所以只要有一个列表(比如你提到的仅含1个元素的列表),整个循环就只会生成一行数据。
解决方案
使用itertools.zip_longest替代zip,它会以最长列表的长度为准,对较短列表的缺失位置填充默认值(或指定值):
修改后的代码
import csv from itertools import zip_longest export = [solutions, fedata, bbcom, fenxt, ten_99, ten_99links] with open('test.csv','w') as f: writer = csv.writer(f) # writer.writerow(['列1', '列2', '列3', '列4', '列5', '列6']) # 可取消注释添加自定义表头 for x in zip_longest(*export, fillvalue=''): # fillvalue指定缺失位置的填充内容,示例用空字符串 writer.writerow(x)
关键说明
zip_longest会遍历到最长的列表结束,短列表的空缺位置会用fillvalue指定的内容填充,你也可以根据需求改成None或其他值- 后续给列表添加元素后,重新运行代码会自动扩展CSV的行数,无需修改核心逻辑
- 下次读取CSV还原列表时,可根据填充值过滤无效内容(比如空字符串)
内容的提问来源于stack exchange,提问作者NaterVater none
相关产品推荐
相关产品推荐

