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

如何使用Python将复杂嵌套JSON数据转换为CSV?

JSON转指定CSV的实现方案

针对你提供的嵌套JSON结构,我们可以通过Python的pandas库将其转换为每行对应一个回答、附带所属问题全量信息的CSV格式,具体步骤和代码如下:

核心思路

  1. 遍历每个问题条目,提取问题的基础信息(标题、内容、提问者信息等),并将标签列表转为逗号分隔的字符串(适配CSV单列存储)
  2. 对每个问题下的所有回答,复制一份问题信息,与回答信息合并为一行数据
  3. 整理所有行数据为DataFrame,调整列顺序后导出为CSV

完整代码

import pandas as pd
import json

# 加载JSON数据(若数据在本地文件,替换为你的文件路径;若为内存中的字典,直接使用该字典)
with open('question_data.json', 'r', encoding='utf-8') as f:
    raw_data = json.load(f)

# 初始化存储最终数据的列表
processed_rows = []

# 遍历每个问题
for q_id, q_content in raw_data.items():
    # 提取问题基础数据,添加问题ID字段
    question_info = q_content['question_data'].copy()
    question_info['question_id'] = q_id
    # 将标签列表转为逗号分隔的字符串
    question_info['tags'] = ', '.join(q_content['tag_data'])
    
    # 遍历当前问题下的所有回答
    for ans_key, ans_content in q_content['answer_data'].items():
        # 合并问题信息与回答信息
        single_row = question_info.copy()
        single_row.update(ans_content)
        # 提取回答序号(可选,根据需求决定是否保留)
        single_row['answer_number'] = ans_key.split('_')[-1]
        processed_rows.append(single_row)

# 转换为DataFrame
result_df = pd.DataFrame(processed_rows)

# 调整列顺序(匹配目标CSV的列排列,可根据实际需求修改)
target_columns = [
    'question_id', 'question_title', 'question_body', 'question_link',
    'question_user_id', 'question_user_aboutme', 'tags',
    'answer_number', 'answer_user_id', 'answer_user_aboutme',
    'was_answer_accepted', 'answer_body'
]
result_df = result_df[target_columns]

# 导出为CSV文件
result_df.to_csv('output_qa_data.csv', index=False, encoding='utf-8')

代码说明

  • 若你的JSON数据不是存储在本地文件,而是直接以字典形式存在代码中,可跳过open文件的步骤,直接将raw_data替换为你的字典变量
  • tags字段的处理可根据目标CSV需求调整,若需要拆分标签为多列,可修改对应逻辑
  • 列顺序可根据你提供的目标CSV示例自行调整,确保与预期格式一致

内容的提问来源于stack exchange,提问作者Randi Sims

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:10:47