如何使用循环简化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
相关产品推荐
相关产品推荐

