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

如何使用循环简化CSV转JSON的重复列处理Python代码

优化方案

你原来的代码冗余点在于重复5次打开读取CSV文件,实际上只需要读取一次文件就能完成所有列的处理,同时修正你自行编写的代码中的迭代器耗尽、结构未赋值的问题,优化后的可运行代码如下:

import csv
import json

# 配置参数,可根据实际列数调整
COLUMN_COUNT = 5
INPUT_CSV_PATH = "newsample2.csv"
OUTPUT_JSON_PATH = "jsonloop.json"

# 1. 单次读取CSV所有行数据,避免重复IO
rows = []
with open(INPUT_CSV_PATH, "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    next(reader)  # 跳过表头
    rows = list(reader)

# 2. 初始化每列对应的结构
strip_list = []
for _ in range(COLUMN_COUNT):
    strip_list.append({
        "Enabled": True,
        "Stops": []
    })

# 3. 遍历所有行,按列填充数据
for row in rows:
    for col_idx in range(COLUMN_COUNT):
        strip_list[col_idx]["Stops"].append({"Symbols": row[col_idx]})

# 4. 组装要求的JSON结构
root = {}
for i in range(COLUMN_COUNT):
    root[f"base_strip{i+1}"] = strip_list[i]

main_root = {
    "ReelStripsDefinition": root
}

# 5. 输出JSON文件
with open(OUTPUT_JSON_PATH, "w", encoding="utf-8") as f:
    json.dump(main_root, f, indent=4)

代码逻辑说明

  • 只做一次CSV文件读取,将所有行数据存入内存列表,避免多次文件IO带来的性能损耗
  • 提前初始化所有列对应的数据结构,通过双层循环按行、列维度填充数据,完全消除冗余代码
  • 所有可变参数(列数、文件路径)都抽离到了开头的配置段,后续调整无需修改业务逻辑
  • 新增了编码声明,避免不同系统读写文件时出现乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:24:02