【问题标题】:How to create newline delimited json-lines file from list of python dictionaries如何从 python 字典列表中创建换行符分隔的 json 行文件
【发布时间】:2019-08-31 17:02:50
【问题描述】:

我正在尝试创建一个 JSON 行的数据文件,以便与谷歌云 AI 平台的 requirements for online prediction 兼容。

现在,我的每个数据点都有一个字典列表。它看起来像这样:

data = [{'values': [0,1,0], 'key': 0}, {'values': [1,1,0], 'key': 1}]

我正在使用以下代码将此数据导出到 data.json

import json
json_filepath = "data.json"
with open(json_filepath, 'w') as f:
    json.dump(data, f)

问题是,这个 data.json 文件看起来就像我的数据(即字典列表)。如何使这个 data.json 文件成为列表中每个字典的换行分隔集合?换句话说,我怎样才能让它看起来像这样:

{'values': [0,1,0], 'key': 0}
{'values': [1,1,0], 'key': 1}

【问题讨论】:

  • 那不是json。
  • 感谢您指出这一点。我更新了帖子以删除对文件的任何引用,因为它是 JSON 格式。相反,根据 Andrew 在下面的评论,我将其称为“JSON Lines”格式。

标签: python json python-3.x


【解决方案1】:

您可以遍历数组并转储每个对象,然后换行'\n'

with open(json_filepath, 'w') as f:
    for d in data:
        json.dump(d, f)
        f.write('\n')

或者,您可以使用 json.dumpsstr.joinmap 的单行代码:

with open(json_filepath, 'w') as f:
    f.write('\n'.join(map(json.dumps, data)))

【讨论】:

    【解决方案2】:
    with open(json_filepath, "w") as f:
        for datum in data:
            f.write(json.dumps(datum))
            f.write("\n")
    

    我还应该提一下,这通常被称为“JSON Lines”数据格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      相关资源
      最近更新 更多