You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.6将多列表转为CSV:实现列表对应列展示的方法

解决Python将多列表转为CSV列的问题

你遇到的问题核心是把列表按行写入了CSV,但实际需要按列对应每行的元素——也就是每一行应该是number[i]、session[i]、stage[i]的组合,而不是把整个列表作为一行。

问题分析

你当前的代码用writerow(number)会把整个number列表作为CSV的一行,导致三个列表横向排列成三行,但我们需要的是纵向的三列,每一行对应三个列表的同位置元素。

解决方案:使用zip() + writerows()

zip()函数可以把多个可迭代对象的对应元素打包成元组,正好满足我们的需求:把number、session、stage的第i个元素组合成一行。然后用writerows()(注意是复数,带s)一次性写入所有行。

修改后的代码如下:

import csv
import sys

number = ['H. R. 43', 'H. Con. Res. 22', 'S. 11']
session = ['1st Session', '1st Session', '2nd Session']
stage = ['Introduced in House', 'Engrossed in House', 'Referred in Senate']

def main(anything):
    with open('BILLS.csv', 'w', newline='') as csvfile:  # 加上newline=''避免Windows下空行
        writer = csv.writer(csvfile)
        writer.writerow(['Number', 'Session', 'Stage'])  # 写入表头
        # 用zip打包三个列表的对应元素,writerows写入所有行
        writer.writerows(zip(number, session, stage))

if __name__ == '__main__':
    main(sys.argv)

关键说明

  • zip(number, session, stage):会生成类似('H. R. 43', '1st Session', 'Introduced in House')这样的元组,每个元组对应CSV的一行。
  • writerows():接收一个可迭代的行对象(比如zip返回的元组序列),一次性写入所有行,比循环调用writerow()更高效。
  • newline='':这是Python csv模块的推荐写法,避免在Windows系统下生成的CSV出现多余的空行。

生成的CSV内容示例

Number,Session,Stage
H. R. 43,1st Session,Introduced in House
H. Con. Res. 22,1st Session,Engrossed in House
S. 11,2nd Session,Referred in Senate

这样就完美实现了你要的效果:三个列表分别对应Number、Session、Stage三列,元素纵向展示。

内容的提问来源于stack exchange,提问作者user9387863

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:53:08