2017-05-06 66 views
1

当我将数据保存到一个JSON文件,它看起来就像这样:如何保存到一个JSON文件与每个键在不同的行

{'Gri33415': ['Griffiths', 2015, 'Gold', 35, 35000], 'Smi22316': ['Smith', 2016, 'Silver', 3, 7500], 'Mia56213': ['Miah', 2013, 'Platinum', 140, 165000]} 

我将如何过想每个键上一些不同行这样的:

{"Gri33415": ["Griffiths", 2015, "Gold", 35, 40000], 
"Smi22316": ["Smith", 2016, "Silver", 3, 7500], 
"Mia56213": ["Miah", 2013, "Platinum", 140, 165000]} 
+0

请仔细阅读本文[how-to-ask](http://stackoverflow.com/help/how-to-ask)以改善您的问题,并提供足够的具体信息,如代码尝试解决问题和错误信息等。 – thewaywewere

+0

如果你有一个非常特殊的输出格式,你将不得不自己组装输出。 –

回答

1

从官方文档:Pretty printing

>>> import json 
>>> print json.dumps({'4': 5, '6': 7}, sort_keys=True, 
...     indent=4, separators=(',', ': ')) 
{ 
    "4": 5, 
    "6": 7 
} 

埃德它1
如果你只想要新的行(例如,不是在每个逗号后),你可以通过一些聪明的正则表达式来解决这个问题。 Live Demo

import json 
import re 

s = json.dumps({'4': 5, '6': [1, 2, 3, 4]}, sort_keys=True) 
s = re.sub(r',\s*"', ',\n"', s) 
s = '{\n' + s[1:-1] + '\n}' 

print(s) 
+0

由于字符串有多个值,它会将新行的每个元素放在一起。 @ Olian04 –

+0

@ eden.c看看我的最新编辑 – Olian04

+0

后,它创建了一个新行(我不熟悉正则表达式) –

0

当你写出来,希望得到相当打印OUTFILE可以添加indent选项。

import json 

with open('your_file.json', 'r') as infile: 
    data = json.load(infile) 

with open('new_json.json', 'w') as outfile: 
    outfile.write(json.dumps(data, indent=4, sort_keys=True)) 
+0

它把每一个价值都归于一个新的关键。 –

相关问题