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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 11:36:02