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

如何在Python3中解析指定JSON数据并导出为CSV文件

解决方案:Python3解析JSON并导出指定字段为CSV

第一步:确保正确读取JSON数据

如果标准json模块无法读取你的JSON,大概率是JSON格式包含非标准语法(比如末尾逗号、单引号、注释),可以用json5库兼容解析:

  • 先安装依赖:pip install json5
  • 读取示例:
import json5

with open("your_data.json", "r", encoding="utf-8") as f:
    data = json5.load(f)

如果是标准JSON格式,直接用内置json模块即可:

import json

with open("your_data.json", "r", encoding="utf-8") as f:
    data = json.load(f)

第二步:提取目标字段

根据JSON的实际结构,分两种常见场景处理:

场景1:JSON是包含多个对象的列表

如果数据结构类似[{"this line": "xxx", "Value": "yyy", "Description": "zzz"}, ...],直接遍历提取:

target_key = "this line"
results = []
for item in data:
    # 确保三个字段都存在,避免KeyError
    if all(k in item for k in [target_key, "Value", "Description"]):
        line_content = item[target_key]
        value = item["Value"]
        desc = item["Description"]
        results.append([line_content, value, desc])

场景2:JSON是多层嵌套结构

如果目标键藏在深层嵌套里,用递归函数遍历查找:

target_key = "this line"
results = []

def find_fields(obj):
    if isinstance(obj, dict):
        # 检查当前字典是否包含三个目标字段
        if target_key in obj and "Value" in obj and "Description" in obj:
            results.append([obj[target_key], obj["Value"], obj["Description"]])
        # 递归遍历子节点
        for v in obj.values():
            find_fields(v)
    elif isinstance(obj, list):
        for item in obj:
            find_fields(item)

# 执行递归查找
find_fields(data)

第三步:导出为指定格式的CSV

用csv模块处理分号分隔的CSV,避免手动拼接出现转义错误:

import csv

with open("output.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f, delimiter=";")
    # 可选:写入表头
    writer.writerow([target_key, "Value", "Description"])
    # 写入数据行
    writer.writerows(results)

不需要表头的话,直接跳过writer.writerow这行即可。

常见问题排查

  • 若提取不到数据,先打印data的结构,确认目标字段的层级和拼写(JSON键区分大小写)
  • 若出现KeyError,说明部分对象缺少字段,可添加异常处理跳过无效项:
for item in data:
    try:
        line_content = item[target_key]
        value = item["Value"]
        desc = item["Description"]
        results.append([line_content, value, desc])
    except KeyError:
        # 跳过缺失字段的对象,或记录日志
        continue

内容的提问来源于stack exchange,提问作者Hans Pettersson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:27:12