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

如何将两个Python列表写入CSV文件?输出不符预期求指导

问题分析与解决办法

问题根源

你的代码中vaules列表的结构错误:每条记录被写成了带逗号和引号的完整字符串,csv.writer会将每个这类字符串视为单个单元格,最终导致每条记录仅占2个单元格,而非预期的4个。同时,你用writerow()写入多条记录的列表,这会把整个列表当作一行的多个元素,而非多行记录。

修正方案(推荐)

直接将每条记录拆分为独立字段的列表,让csv.writer自动处理分隔和引号:

import csv  # 补充原代码缺失的模块导入

fieldHeader = ["id", "name", "car", "colour"]
# 修正:每条记录是独立字段组成的列表,无需手动添加引号和逗号
values = [["1", "John", "honda", "blue"], ["2", "Tom", "bmw", "red"]]

with open("output.csv", "w", newline="") as f:  # 添加newline=""避免Windows下生成空行
    w = csv.writer(f, delimiter=",")
    w.writerow(fieldHeader)
    w.writerows(values)  # 使用writerows()批量写入多条记录

关键说明

  • csv.writer会自动处理字段的分隔逻辑,当字段包含逗号、引号等特殊字符时,会自动添加引号包裹,无需手动操作
  • writerows()(复数)用于写入多条记录的列表,而writerow()(单数)仅写入单条记录
  • 打开文件时指定newline=""是csv模块的标准写法,可避免Windows系统下生成多余的空行

兼容原字符串格式的方案(不推荐)

如果必须保留原values的字符串格式,可以先用csv.reader解析每个字符串为字段列表后再写入:

import csv

fieldHeader = ["id", "name", "car", "colour"]
values = ['"1", "John", "honda", "blue"','"2", "Tom", "bmw", "red"']

with open("output.csv", "w", newline="") as f:
    w = csv.writer(f, delimiter=",")
    w.writerow(fieldHeader)
    for line in values:
        # 解析字符串为字段列表,skipinitialspace=True忽略字段前的空格
        row = next(csv.reader([line], delimiter=",", skipinitialspace=True))
        w.writerow(row)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:45:37