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

Python csv.writerow()写入列表时多组数据挤在同一行如何解决

问题根因

你当前写入逻辑的错误点很明确:writerow() 单次调用仅会写入一行内容,你传入[tickets, duration]时,是把两个完整列表作为这一行的两个单元格值写入,自然会出现所有数据挤在同一行的情况。

修正方案

要实现逐行对应写入,需要把两个列表同位置的元素一一配对,每一组配对值作为单独一行写入即可。可以直接用Python内置的zip()函数完成两个列表的配对,搭配csv模块的writerows()(注意方法名是复数,支持批量写入多行)就能实现预期效果。
修正后的可运行代码:

import csv

issues_test = s_json['issues']
tickets, duration = [], []
for item in issues_test:
    tickets.append(item['key'].strip())
    duration.append(item['fields']['customfield_154'].strip())

header = ['Ticket', 'Duration']
with open('P1_6.7.csv', 'a', newline='', encoding='utf-8') as arc:
    writer = csv.writer(arc)
    writer.writerow(header)
    # 配对两个列表的元素,批量写入多行
    writer.writerows(zip(tickets, duration))

相关注意点:

  • 代码里的strip()是用来清理你示例数据中 DC-631前面多余的首尾空白字符,如果确认原始数据没有多余空格,可以去掉这部分处理。
  • 打开文件时传入newline=''是Python csv模块的官方推荐写法,可以避免Windows系统下写入CSV时出现多余空行的问题;加上encoding='utf-8'可以避免特殊字符、中文乱码。
  • 你原代码里s_json[['issues'][0]]属于冗余写法,['issues'][0]的结果就是字符串'issues',直接写s_json['issues']取值即可。
可选逐行写入写法

如果你不想用批量写入的writerows(),也可以通过循环遍历配对结果逐行写入,最终生成的文件效果完全一致:

with open('P1_6.7.csv', 'a', newline='', encoding='utf-8') as arc:
    writer = csv.writer(arc)
    writer.writerow(header)
    for ticket_num, dur in zip(tickets, duration):
        writer.writerow([ticket_num, dur])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:57:14