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

如何在Python中将多维列表写入CSV文件?已尝试方法但遇列数异常

解决Python多维列表写入CSV仅显示一列的问题

首先,咱们先拆解你遇到的核心问题:不管是直接写入多维列表,还是循环合并CSV的代码,最终生成的CSV都只有一列,这大概率是文件打开模式、索引逻辑或者列表结构的问题。

一、直接写入多维列表的正确写法

你第一个代码里用了'wb'二进制模式打开文件,在Python 3中这会干扰csv.writer的正常工作——因为csv模块需要处理文本模式下的换行符规则。另外,指定newline=''能避免生成多余的空行。

针对你的示例列表[[1,2,3],[4,5,6]],用下面的代码就能得到每行3列的CSV:

import csv

mylist = [[1,2,3],[4,5,6]]
output = "result.csv"

with open(output, 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f, delimiter=',')
    writer.writerows(mylist)

运行后CSV内容会是:

1,2,3
4,5,6

二、循环合并CSV代码的问题修正

你的第二段代码是想把mylist的元素追加到已有CSV的每行后,但出现单列的原因可能有这几个:

  1. 循环索引错误:i从1开始,而mylist的索引从0开始,导致第一次循环就取到了mylist[1],和输入CSV的行不匹配
  2. 打开文件时没指定newline='',导致换行符异常
  3. 输入CSV的每行本身只有一个元素(比如每行是带逗号的字符串,而非被分割的多元素列表)

修正后的代码示例(假设输入CSV每行对应mylist的一个子列表):

import csv
import os

mylist = [[1,2,3],[4,5,6]]
folder = "./your_target_folder"  # 替换成你的实际文件夹路径

# 索引从0开始,匹配mylist的元素顺序
for i in range(len(mylist)):
    input_path = os.path.join(folder, f"{i}_development")
    output_path = os.path.join(folder, f"{i+1}_development")
    
    with open(input_path, 'r', encoding='utf-8') as csvinput, \
         open(output_path, 'w', newline='', encoding='utf-8') as csvoutput:
        
        reader = csv.reader(csvinput)
        writer = csv.writer(csvoutput)
        
        # 逐行合并输入CSV内容和mylist对应子列表
        for row_idx, row in enumerate(reader):
            if row_idx < len(mylist):
                writer.writerow(row + mylist[row_idx])
            else:
                writer.writerow(row)
    
    os.remove(input_path)

额外排查点

如果还是出现单列,检查这两个细节:

  • 确认mylist的每个子列表是多个独立元素(比如[1,2,3]),而非一个包含逗号的字符串(比如["1,2,3"]会被当成单列)
  • 用文本编辑器打开CSV,看分隔符是否被识别——如果系统默认分隔符不是逗号,可在csv.writer里明确指定delimiter=','强制使用逗号分隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:38:23