【问题标题】:Split json array into smaller in a specific format in python在python中以特定格式将json数组拆分为更小的数组
【发布时间】:2017-07-26 23:19:30
【问题描述】:

我下载了一个巨大的 json 数组文件,需要将其拆分为较小的文件,但我需要以下格式的较小文件(数组中每个新对象的换行符):(原始 json 也是相同格式)

[
{"a":"a1","b":"b1","c":"c1"},
{"a":"a2","b":"b2","c":"c2"},
{"a":"a3","b":"b3","c":"c3"}
]

我使用了 json.dump,但它只是在一行中打印较小的数组,并且使用 indent 选项也没有给我上述格式的输出

【问题讨论】:

  • 是不是故意不加引号?我不确定这是有效的 json...
  • 介意解释为什么它必须是特定格式而不是可读的 json?
  • @Tadhg McDonald-Jensen :错过了报价,现在添加它们
  • 需要更多信息。原来的json是什么样子的?
  • @AndrewSmiley 原来的json也是一样的格式

标签: python arrays json


【解决方案1】:

虽然我不知道你原来的 json 是什么样子,但你基本上会想要这样的

lines = []
for something in original_json:
    line={something['a']:something['aa']} #whatever you need to do to get your  values
    lines.append(line) 
    #alternatively you can simplify this by doing lines.append({something['a']:something['aa'], etc}
with open('myfile.json', 'a+') as f1:
    f1.write("[\n")
    for line in lines:
         f1.write("%s,\n"%(line))
    f1.write("]")

【讨论】:

  • dumps 的格式是否与 dump 不同?我认为操作希望特定的换行符是示例输出的间距格式。
  • 转储的行为确实不同,但我会更新我的答案以反映间距
  • 见上文。不幸的是,没有简单的方法来获得这种格式。
  • 你需要注意括号和逗号的数量,我想。
  • 是的,你最好做一个 for 循环而不是一个 for each 循环,而不是在最后一个 dict 项目上添加额外的逗号。这又快又脏,不想把代码交给他,而是把他指向正确的方向。
猜你喜欢
  • 2022-07-07
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 2015-04-20
相关资源
最近更新 更多