【发布时间】:2021-02-24 05:12:06
【问题描述】:
我正在使用 Python 和一些 json 数据。我正在遍历我的数据(都是字典),当我将循环值打印到控制台时,每行得到 1 个字典。
但是,当我使用 json.dumps() 执行同一行代码以将我的对象转换为能够输出的字符串时,我会在字典中得到多行,而不是希望字典之外的新行。
循环时如何在每个字典值后添加新行?
代码示例:
def test(values, filename):
with open(filename, 'w') as f:
for value in values:
print(json.dumps(value, sort_keys=True)) # gives me each dictionary in a new line
f.write(json.dumps(value, sort_keys=True, indent=0) #gives me a new line for each key/value pair instead of after each dictionary.
控制台输出:
{"first_name": "John", "last_name": "Smith", "food": "corn"}
{"first_name": "Jane", "last_name": "Doe", "food": "soup"}
在我的输出文件中输出:
{"first_name": "John", "last_name": "Smith", "food": "corn"}{"first_name": "Jane", "last_name": "Doe", "food": "soup"}
我缺少什么代码来为每个字典值换行以使我的输出文件看起来与我的控制台相同?
【问题讨论】:
-
请注意,如果您一次转储并写入一个值,您将不会生成有效的 json 文件,而是ndjson 文件。即您的文件将不是有效的 json,但每一行本身都是有效的 json。这真的是你想要的吗?
-
print添加换行符。file.write没有。 -
你可以做
print(json.dumps(value, sort_keys=True), file=f)
标签: python json loops dictionary