如何使用Python将复杂嵌套JSON数据转换为CSV?
JSON转指定CSV的实现方案
针对你提供的嵌套JSON结构,我们可以通过Python的pandas库将其转换为每行对应一个回答、附带所属问题全量信息的CSV格式,具体步骤和代码如下:
核心思路
- 遍历每个问题条目,提取问题的基础信息(标题、内容、提问者信息等),并将标签列表转为逗号分隔的字符串(适配CSV单列存储)
- 对每个问题下的所有回答,复制一份问题信息,与回答信息合并为一行数据
- 整理所有行数据为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
相关产品推荐
相关产品推荐

