如何在不丢失逗号的情况下将列表写入JSON文件

时间:2019-06-16 20:05:21

标签: python json

我正在尝试使用Python开发代码,该代码在不删除逗号或方括号的情况下格式化JSON文件中的列表。该列表应该在每行上都有每组数据。我可以自己处理括号,但是逗号有问题。

我已经尝试过在.dump中包含一个缩进语句,但这不是正确的格式。

    #Attempt 1

    for data in data:
        outfile.write('\t')
        json.dump(data, outfile)
        outfile.write('\n')

    #Attempt 2
    for obj in data:
        outfile.write('\t' + json.dumps(obj) + '\n')

预期产量

[
    [1, 12],
    [2, 7],
    [3, 6]
]

实际输出

[
    [1, 12]
    [2, 7]
    [3, 6]
]

3 个答案:

答案 0 :(得分:4)

您为什么要迭代?您应该一次性丢弃整个列表:

outfile.write(json.dumps(data))

答案 1 :(得分:1)

您可以修改Attempt 2,以将逗号添加到除最后一个输出项之外的每个输出项中:

for ndx, obj in enumerate(data, 1):
    outfile.write(
        '\t'
        + json.dumps(obj)
        + (',' if ndx != len(data) else '')
        + '\n'
    )

答案 2 :(得分:0)

我会使用类似的东西:

# Python 3+
import json

objects = [[1, 2], [3, 4]]
# the magic happens next line:
dump = "[\n" + ",\n".join([ "\t" + json.dumps(obj) for obj in objects ]) + "\n]"
print(dump)

with open("out", "w") as outfile:
  outfile.write(dump)

json.dumps(obj)将对象的JSON表示形式输出为字符串。制表符附加到每个对象表示形式,并使用,\n进行连接。

输出:

[
    [1, 2],
    [3, 4]
]