首页 > 解决方案 > 在 python 中创建一个 JSON 文件,它们不是用逗号分隔的

问题描述

我正在寻找在 python 中创建以下 JSON 文件。我不明白如何拥有多个不以逗号分隔的字典,因此当我使用 JSON 库将字典保存到磁盘时,我得到以下 JSON;

{"text": "Terrible customer service.", "labels": ["negative"], "meta": {"wikiPageID": 1}}

{"text": "Really great transaction.", "labels": ["positive"], "meta": {"wikiPageID": 2}}

{"text": "Great price.", "labels": ["positive"], "meta": {"wikiPageID": 3}}

而不是像下面这样的字典列表;

[{"text": "Terrible customer service.", "labels": ["negative"], "meta": {"wikiPageID": 1}},

{"text": "Really great transaction.", "labels": ["positive"], "meta": {"wikiPageID": 2}},

{"text": "Great price.", "labels": ["positive"], "meta": {"wikiPageID": 3}}]

不同之处在于,在第一个示例中,每一行都是一个字典,它们不在列表中或用逗号分隔。

而在第二个例子中,我能想出的是一个字典列表,每个字典用逗号分隔。

如果这是一个愚蠢的问题,我很抱歉,我已经为此烦恼了好几个星期,并且无法提出解决方案。

任何帮助表示赞赏。

并提前感谢您。

标签: jsonpython-3.xspacydoccano

解决方案


正如@LaurinNiemeyer 提到的,没有办法将多个单独的 Python 字典对象存储在一个 json 文件中,而无需通过 Python 内置库将它们包装在列表或字典或其他支持的数据结构中。但是,有一种解决方法,它会根据需要导出文件,但请记住,即使文件具有“.json”扩展名,这种格式也不符合 json 格式!
假设您有以下要导出的字典对象:

dict1 = {"text": "Terrible customer service.", "labels": ["negative"], "meta": {"wikiPageID": 1}}
dict2 = {"text": "Really great transaction.", "labels": ["positive"], "meta": {"wikiPageID": 2}}
dict3 = {"text": "Great price.", "labels": ["positive"], "meta": {"wikiPageID": 3}}

要导出上述字典对象,您只需执行以下操作:

objs_to_export = [dict1, dict2, dict3]
with open("json_file.json", "a") as out_file:
for obj in objs_to_export:    
    json.dump(obj, out_file)
    out_file.write('\n')

推荐阅读