如何使用Python提取JSON中cell_info子集并转换为CSV文件
解决方法
你不需要完全重写现有逻辑,只要针对嵌套结构筛选和扁平化处理即可,调整后的代码如下:
import json import csv # 嵌套字典打平工具函数 def flatten_dict(d, parent_key='', sep='.'): items = [] for k, v in d.items(): new_key = f"{parent_key}{sep}{k}" if parent_key else k if isinstance(v, dict): items.extend(flatten_dict(v, new_key, sep=sep).items()) else: items.append((new_key, v)) return dict(items) # 读取JSON文件 with open(r'C:\Users\chick\Desktop\Jsons\home\support\bcfiles\$$5liZwDzM-Interfaces.json', 'r', encoding='utf-8') as json_file: data = json.load(json_file) interface_data = data['interfaces'] cell_info_list = [] # 筛选并处理所有带cell_info的接口 for iface in interface_data: if 'cell_info' in iface: # 打平嵌套的cell_info结构 flattened_cell = flatten_dict(iface['cell_info']) cell_info_list.append(flattened_cell) # 写入CSV if cell_info_list: with open(r'C:\Users\chick\Desktop\Jsons\data_file.csv', 'w', encoding='utf-8', newline='') as data_file: csv_writer = csv.DictWriter(data_file, fieldnames=cell_info_list[0].keys()) csv_writer.writeheader() csv_writer.writerows(cell_info_list)
核心修改点
- 新增
flatten_dict函数,将多层嵌套的cell_info结构转为单层键值对,嵌套层级用.连接,比如原结构里的carriers.primary.band会直接作为CSV的列名 - 遍历
interfaces时增加筛选逻辑,仅处理包含cell_info字段的接口条目,过滤以太网等其他类型的接口 - 改用
csv.DictWriter写入数据,自动匹配打平后的字段列,避免表头和内容错位 - 新增文件编码指定和
newline=''参数,避免Windows下CSV出现多余空行、乱码问题
内容的提问来源于stack exchange,提问作者user2432988
相关产品推荐
相关产品推荐

