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

如何在Python Notebook中将JSON数组拆分为单个JSON文件?

问题

我正在使用Python Notebook,有一个存储在json_out变量中的JSON数组,结构如下:

[{"any": 2023},{"dia": 24,"mes": 1,"any": 2023,"mes_referencia": 12,"any_referencia": 2022,"calendari_nom": "CCC"},{"dia": 4,"mes": 12,"any": 2023,"mes_referencia": 10,"any_referencia": 2023,"calendari_nom": "FFF"},{"dia": 4,"mes": 1,"any": 2023,"mes_referencia": 0,"any_referencia": 2022,"calendari_nom": "GAS","periode_ref": "TT"},{"dia": 3,"mes": 10,"any": 2023,"mes_referencia": 0,"any_referencia": 2023,"calendari_nom": "GAS","periode_ref": "22"}]

需要将其拆分为多个文件,每个文件对应一个独立的{}对象块。尝试了以下代码但无法正常运行:

import json

with (json_out, 'r') as f_in:
    data = json.load(f_in)

    for i, fact in enumerate(data[], 1):

        with open('data_out_{}.json'.format(i), 'w') as f_out:
            d = {}
            json.dump(d, f_out, indent=4)

请问该如何实现需求?

解决方案

原代码的问题

  1. 文件操作错误:json_out是已经加载到内存的Python列表变量,不是文件路径,不需要用with open(...)和json.load()读取,直接使用即可。
  2. 语法错误:enumerate(data[], 1)中的data[]写法无效,data本身就是列表,直接写enumerate(data, 1)即可。
  3. 逻辑错误:循环内创建空字典d={}并写入,没有把遍历到的目标对象写入文件,导致输出空内容。

正确代码

import json

# 直接遍历已有的json_out列表变量
for index, item in enumerate(json_out, start=1):
    # 生成带序号的输出文件名
    output_filename = f'data_out_{index}.json'
    # 写入单个JSON对象到文件
    with open(output_filename, 'w', encoding='utf-8') as f:
        json.dump(item, f, indent=4, ensure_ascii=False)

代码说明

  • 直接使用json_out变量:因为它已经是解析后的Python列表,无需再次读取解析。
  • enumerate(json_out, start=1):从1开始为每个元素编号,生成有序的文件名(如data_out_1.json、data_out_2.json)。
  • 写入目标对象:将遍历到的每个item(即原数组中的单个{}对象)直接写入文件,确保每个文件对应一个独立的JSON对象。
  • encoding='utf-8'和ensure_ascii=False:避免非ASCII字符(如特殊符号、中文)出现乱码,可根据实际需求调整。

内容的提问来源于stack exchange,提问作者Jose Maria Acevedo Reinoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:18:28