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

Python按指定格式写入CSV文件报int不可迭代错误解决

报错原因
  • 核心触发点:zip() 函数要求传入的所有参数都必须是可迭代对象(列表、数组、元组等支持遍历的类型),原代码中循环变量x是range(0,N)生成的整数(取值为0、1),整数类型不支持迭代,传入zip(x, Pe[x])就会抛出TypeError: 'int' object is not iterable错误。
  • 其余逻辑问题:
    • 把csv.writer实例化的代码写在了for循环内部,每次循环都会重新创建写入对象,会导致文件写入错乱、出现多余空行
    • 即使将x转为可迭代对象(如包裹为[x]),也只会给每个分组的第一行添加标识,剩余行第一列为空,完全无法匹配目标输出格式
修正后可运行代码
import numpy as np
import csv

N = 2
Pe = np.array([[[128.22918457, 168.52413295, 209.72343319],
        [129.01598287, 179.03716051, 150.68633749],
        [131.00688309, 187.42601593, 193.68172751]],

       [[ 64.11459228,  84.26206648, 104.86171659],
        [ 64.50799144,  89.51858026,  75.34316875],
        [ 65.50344155,  93.71300796,  96.84086375]]])

with open('Test123.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    # 写入和示例对齐的表头
    writer.writerow(['', 'a', 'b', 'c'])
    row_num = 1
    for group_idx in range(N):
        # 遍历当前分组下的每一行数值
        for data_row in Pe[group_idx]:
            writer.writerow([row_num] + list(data_row))
            row_num += 1
代码说明
  • 打开文件时添加newline=''参数是Python csv模块的官方推荐写法,可以避免生成的CSV文件出现多余空行
  • 用全局递增的row_num作为第一列的序号,和参考示例里从1开始连续编号的格式完全对齐
  • 将writer初始化移到循环外,只创建一次写入实例,保证写入格式正常
  • 运行后生成的Test123.csv格式和给出的参考示例完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:48:23