2017-05-06 20 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

它把每一個價值都歸於一個新的關鍵。 –

相關問題