Python中简化JSON条目:清理xmltodict转换XML得到的冗余JSON结构
解决方案
你可以直接通过递归函数批量处理整个解析后的字典结构,比单独提取feat列表写入更高效,适配任意层级的嵌套结构,代码实现如下:
def transform_struct(node): # 处理列表类型 if isinstance(node, list): return [transform_struct(item) for item in node] # 处理字典类型 if isinstance(node, dict): res = {} for k, v in node.items(): if k == 'feat': # 处理feat为数组的情况(根节点下的feat数组) if isinstance(v, list): for item in v: res[item['att']] = item['val'] # 处理feat为单个对象的情况(如Lemma下的feat) else: res[v['att']] = v['val'] else: # 其余字段递归处理后保留 res[k] = transform_struct(v) return res # 基础类型直接返回 return node # 使用示例 import json # 读取xmltodict解析得到的原始JSON数据 with open('原始解析结果文件路径.json', 'r', encoding='utf-8') as f: raw_data = json.load(f) processed_data = transform_struct(raw_data) # 输出处理后的结果 with open('清理后结果文件路径.json', 'w', encoding='utf-8') as f: json.dump(processed_data, f, ensure_ascii=False, indent=2)
该实现的优势:
- 自动适配所有层级的
feat结构,不管是数组形式还是单个对象形式都能正确转换 - 无需手动遍历提取字段,后续结构发生小范围变化时也不需要大幅修改代码
- 处理超大型文件时可以结合流式读写逻辑,进一步降低内存占用
内容的提问来源于stack exchange,提问作者ma1Maus
相关产品推荐
相关产品推荐

