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

如何修正Python代码,实现循环输出按列写入CSV并使列内容一一对应?

修正Python代码生成对应列的CSV文件

你的需求是生成表头为Y1、Y2的CSV文件,每行内容为i1与z1、i2与z2这种一一对应的形式,但现有代码把两个列表整行写入,导致无法实现列对应,以下是修正方案:

问题分析

原代码把row和row_1两个完整列表作为一行的两个元素写入CSV,最终会得到一行包含两个列表的内容,完全不符合每行一对i和z的结构要求。

修正代码

import csv
import os

# 以追加模式打开文件,若需要覆盖原有内容可将模式改为"w"
with open(r"./file.csv", "a", newline="") as f1:
    writer = csv.writer(f1, delimiter="\t", lineterminator="\n")
    
    # 仅当文件为空时写入表头,避免重复追加
    if os.path.getsize(r"./file.csv") == 0:
        writer.writerow(["Y1", "Y2"])
    
    # 用zip将两个列表的元素一一配对,批量写入每行数据
    writer.writerows(zip(test_data["data"][1], test_results))

关键说明

  • zip(test_data["data"][1], test_results)会把两个列表中索引对应的元素配对,生成(i1,z1)、(i2,z2)这类元组,正好对应CSV的每行两列
  • writerows()方法可以直接批量写入所有配对后的行,无需手动循环收集元素
  • 加入文件大小判断是为了避免每次追加内容时重复写入表头,若不需要追加功能,直接用"w"模式覆盖文件,可去掉判断直接写表头

如果需要手动控制逐行写入,也可以用以下写法:

import csv

with open(r"./file.csv", "w", newline="") as f1:
    writer = csv.writer(f1, delimiter="\t", lineterminator="\n")
    # 直接写入表头
    writer.writerow(["Y1", "Y2"])
    # 循环遍历配对元素,逐行写入
    for i, z in zip(test_data["data"][1], test_results):
        writer.writerow([i, z])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:22:46