我有一個JSON文件,該文件是我想prettyprint--什麼是python中要做到這一點最簡單的方法一塌糊塗?我知道PrettyPrint需要一個「對象」,我認爲它可以是一個文件,但我不知道如何傳遞文件 - 只是使用文件名不起作用。如何打印JSON文件?
回答
的json
模塊已經實現了一些基本的漂亮印花與indent
參數:
>>> import json
>>>
>>> your_json = '["foo", {"bar":["baz", null, 1.0, 2]}]'
>>> parsed = json.loads(your_json)
>>> print json.dumps(parsed, indent=4, sort_keys=True)
[
"foo",
{
"bar": [
"baz",
null,
1.0,
2
]
}
]
解析文件,使用json.load
:
with open('filename.txt', 'r') as handle:
parsed = json.load(handle)
你可以在命令行上做到這一點:
cat some.json | python -m json.tool
(如已中號在問題的評論中提到)。
實際上python並不是我最喜歡的工具,就json在命令行上的處理而言。對於簡單漂亮的打印是好的,但如果你想操縱JSON,它可能會變得過於複雜。你很快就需要編寫一個單獨的腳本文件,你最終可以得到其鍵是「某個鍵」(python unicode)的地圖,這使得選擇字段變得更加困難,並且不會真的朝着漂亮的方向前進 - 印刷。
我用jq。以上可以通過以下方式完成:
cat some.json | jq ''
您將獲得顏色作爲獎勵(並且方式更容易擴展)。
JQ很棒,但是有一個最大限制,所以它對大文件無用。 (即處理一個1.15MB的文件) https://github.com/stedolan/jq/issues/1041 –
是的,男人,當然,如果你正在寫超過10K行代碼的jq過濾器我想你'重新嘗試像騎自行車去火星那樣的事情。 –
lol:D @ gismo-ranas通過管道傳輸到一個文件的json.tool版本對於大文件非常有效;而且速度很快。我喜歡JQ,但格式化的東西超出了一個小的有效載荷(你可以在大多數文本編輯器中完成)超出了它的範圍:) 隨機添加:http://www.json-generator.com/是一個簡潔的工具來製作測試數據 –
Pygmentize + Python的json.tool =漂亮與語法高亮
Pygmentize是一個殺手工具打印。 See this.
我結合蟒蛇json.tool與pygmentize
echo '{"foo": "bar"}' | python -m json.tool | pygmentize -l json
見上面pygmentize安裝說明的鏈接。
這樣做的演示是在下面的圖片:
在你的例子中'-g'實際上並不工作;)由於輸入來自stdin,所以pygmentize無法做出很好的猜測。你需要明確地指定lexer:'echo'{「foo」:「bar」}'| python -m json.tool | pygmentize -l json' –
@DenisTheMenace它曾經在2015年工作時創建了這個示例圖像。現在我的系統似乎也沒有工作。 –
使用此功能,不出汗不必記住,如果你的JSON是str
或dict
再次 - 只要看看美麗的打印:
import json
def pp_json(json_thing, sort=True, indents=4):
if type(json_thing) is str:
print(json.dumps(json.loads(json_thing), sort_keys=sort, indent=indents))
else:
print(json.dumps(json_thing, sort_keys=sort, indent=indents))
return None
pp_json(your_json_string_or_dict)
爲了能夠相當從命令行打印,並能有超過縮進控制等,你可以建立一個類似這樣的別名:
alias jsonpp="python -c 'import sys, json; print json.dumps(json.load(sys.stdin), sort_keys=True, indent=2)'"
然後使用別名下列方式之一:
cat myfile.json | jsonpp
jsonpp < myfile.json
你可以使用pprint。
如何讀取JSON數據文件並打印出來。
import json
import pprint
with open('filename.txt', 'r') as f:
json_data = json.load(f.read())
pprint.pprint(json_data)
這裏的漂亮打印JSON在Python中的一個不錯的方式控制檯的一個簡單的例子,而不需要JSON到您的計算機上的本地文件:
我在Python 3中得到以下錯誤信息:「TypeError:JSON對象必須是str,而不是'bytes'」 – MrT
- 1. 如何在Java中打印JSON文件
- 2. Scrapy打印到json文件
- 3. 從JSP打印JSON文件
- 4. 如何打印pdf.js文件?
- 5. 如何打印.rtf文件?
- 6. 如何打印文件C#
- 7. 如何打印json數據。
- 8. 如何打印文本字段本地JSON文件的數據
- 9. 使用AJAX JSON打印文件
- 10. 將json值打印到文件
- 11. 在Go中打印JSON文件的值
- 12. 打印json到ruby程序文件
- 13. jqPlot:從json文件打印點標籤
- 14. 如何在Qt中打印文本文件到打印機?
- 15. 如何知道打印機的打印方法何時完成打印文件?
- 16. 如何使用python從json文件打印特定值?
- 17. 如何輸入JSON文件並打印一行
- 18. 如何打印json輸出到特定的文件路徑?
- 19. 如何查看在Ubuntu上打印的大型JSON文件?
- 20. 如何打印或調試json文件中的值
- 21. WPF中如何打印文本文件
- 22. 打印文件
- 23. 打印文件
- 24. 如何將文件打印到特定的打印機
- 25. 如何在PDF文件上打印打印機型號
- 26. 如何訪問打印稿文件中的實例可打印?
- 27. 如何從打印了評論的文件打印值?
- 28. 如何從無線打印機打印PDF文件?
- 29. 我如何打印圖像文件在打印機
- 30. 如何判斷打印機是否打印到文件?
嘗試解析JSON使用'json.loads()'和漂亮的打印結果字典。或者直接跳到Python的[Pretty print]部分['json'的文檔](http://docs.python.org/library/json.html)。 – Blender
http://stackoverflow.com/questions/352098/how-to-pretty-print-json-script –
@Blender如果你發佈一個答案我會給你信貸......這可能會因爲重複而關閉,因爲解決方案是一樣的,但問題是不同的,所以也許不是。 – Colleen