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

Python代码CSV输出异常:期望表格格式却每行仅输出单个值

问题分析与解决方案

你想要生成带表头(A到J)、1000行数据的表格型CSV,但目前每个单元格内容都单独占了一行——这是因为你的代码每次只写入单个元素的列表,csv.writerow()会把列表里的每个元素作为列,单个元素自然就单独成行了。

问题出在哪?

先看你代码的核心逻辑问题:

import random
import csv

with open('table.csv', 'w') as file:
    csv_write = csv.writer(file,delimiter='\t')
    # 逐个写入A到J,每个字母单独占一行
    for i in range(ord('A'), ord('J')+1):
        row = [chr(i)]
        csv_write.writerow(row)
    # 逐个生成随机数,每个数字也单独占一行
    for j in range(1,11):
        for k in range(1,1001):
            row2 = [random.randint(1,1000)]
            csv_write.writerow(row2)

这段代码的逻辑是:先把A到J每个字母分别写成一行,再把10*1000个随机数逐个写成一行,完全偏离了你要的“一行表头+每行10列数据”的表格结构。

修正后的代码

要实现预期格式,我们需要调整两个核心步骤:

  1. 一次性写入整行表头:把A到J放到同一个列表里,作为一行写入
  2. 每次生成整行数据:每行包含10个随机数,循环1000次写入

修正后的代码如下:

import random
import csv

# 打开文件时添加newline='',避免Windows系统下出现多余空行
with open('table.csv', 'w', newline='') as file:
    csv_write = csv.writer(file, delimiter='\t')
    # 生成包含A到J的表头列表,一次性写入一行
    header = [chr(i) for i in range(ord('A'), ord('J')+1)]
    csv_write.writerow(header)
    
    # 循环生成1000行数据,每行10个1-1000的随机数
    for _ in range(1000):
        data_row = [random.randint(1, 1000) for _ in range(10)]
        csv_write.writerow(data_row)

关键说明

  • 表头通过列表推导式生成[A,B,C,...,J],用writerow()写入后就是表格的第一行
  • 每次循环生成10个随机数的列表,写入后就是一行10列的数据,完美对应表头的10列
  • newline=''是csv模块的常见最佳实践,能避免Windows系统下写入时出现多余空行

这样输出的CSV文件就会是你预期的格式:第一行是A B C ... J,后续每行都是10个数字,每个数字对应一列。

内容的提问来源于stack exchange,提问作者R.N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:20:51