Python中通过JSON循环导出CSV的格式修正问题
问题分析与解决方案
你的代码存在三个核心问题:
- 表头在循环内重复写入,导致每一条数据前都出现冗余表头
- 每个字段单独调用
writerow(),使得每个值单独占一行,而非同一行的不同列 - 缺少你需要的item索引列
以下是修正后的代码:
import json import csv # 解析JSON数据(假设response已正确获取) data = json.loads(response.text) # 使用with语句自动管理文件,无需手动调用close with open("export-results.csv", "w", newline="") as f: writer = csv.writer(f) # 表头添加Item Index列 header = ('Item Index', 'Device Name', 'Operating System', 'IP Address') # 仅写入一次表头 writer.writerow(header) # 使用enumerate获取索引,start=1让索引从1开始计数(如需从0开始可省略该参数) for idx, item in enumerate(data, start=1): # 将索引和各字段值打包成列表,一次性写入整行 row_data = [ idx, item['name'], item['os_version_and_architecture'], item['last_ip_address'] ] writer.writerow(row_data)
关键修正说明:
- 将表头写入操作移到循环外,避免重复输出表头
- 用
enumerate()直接获取item的索引,满足你每行带索引的需求 - 把索引和所有字段值放在同一个列表中,通过一次
writerow()完成整行写入,确保每列对应正确的字段值 - 使用
with语句处理文件,自动完成文件关闭,避免资源泄漏
内容的提问来源于stack exchange,提问作者Stephen McFall
相关产品推荐
相关产品推荐

