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

Python中解析JSON并将字段不一致的JSON数据写入CSV文件的实现咨询

解决方案:统一JSON字段并导出为CSV

嘿,这问题我之前也碰到过!字段不统一确实很头疼,不过用Python处理起来其实挺简单的,我给你两种解决方案,一种是用基础库手动处理(灵活性高),另一种是用pandas快速搞定(代码简洁),你可以按需选择。

方法一:使用Python标准库手动处理

这种方法不需要额外安装依赖,适合需要自定义处理逻辑的场景。

步骤1:读取并解析JSON数据

首先我们从文件中读取JSON并解析成Python对象:

import json
import csv

# 读取JSON文件(替换成你的文件路径)
with open('books_data.json', 'r', encoding='utf-8') as f:
    raw_data = json.load(f)
books_list = raw_data['books']

步骤2:收集所有唯一字段

遍历所有book对象,把所有出现过的字段收集起来,确保我们不会遗漏任何可能的字段:

# 用集合去重,收集所有字段
all_fields = set()
for book in books_list:
    all_fields.update(book.keys())
# 转成排序后的列表,保证CSV的列顺序固定
all_fields = sorted(all_fields)

步骤3:补全缺失字段并扁平化数据

对每个book对象,检查每个字段是否存在,不存在就设为空字符串:

flattened_books = []
for book in books_list:
    # 用dict.get()方法,第二个参数是默认值(空字符串)
    flattened_book = {field: book.get(field, "") for field in all_fields}
    # 可选:如果有列表类型的字段(比如你的field2),可以转成逗号分隔的字符串
    # if isinstance(flattened_book['field2'], list):
    #     flattened_book['field2'] = ', '.join(flattened_book['field2'])
    flattened_books.append(flattened_book)

步骤4:写入CSV文件

用csv.DictWriter把处理好的数据写入CSV:

with open('books_output.csv', 'w', newline='', encoding='utf-8') as f:
    # 指定列名
    writer = csv.DictWriter(f, fieldnames=all_fields)
    # 写入表头
    writer.writeheader()
    # 写入所有行数据
    writer.writerows(flattened_books)

方法二:使用Pandas快速处理

如果你已经安装了Pandas,那这个方法会更简洁,Pandas会自动帮你处理缺失字段:

步骤1:读取JSON并转为DataFrame

import pandas as pd
import json

with open('books_data.json', 'r', encoding='utf-8') as f:
    raw_data = json.load(f)
# 直接把books列表转成DataFrame,缺失的字段会自动填充为NaN
df = pd.DataFrame(raw_data['books'])

步骤2:替换缺失值为空字符串

把DataFrame中的NaN替换成空字符串:

df = df.fillna("")

步骤3:写入CSV文件

# index=False表示不写入行索引
df.to_csv('books_pandas_output.csv', index=False, encoding='utf-8')

额外说明

  • 如果你需要处理列表类型的字段(比如示例中的field2),可以在扁平化的时候把列表转为逗号分隔的字符串,这样CSV里的内容会更易读。
  • 两种方法都能实现你要的扁平化结构,基础方法适合需要精细控制的场景,Pandas方法适合快速开发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:50:53