python JSON फ़ाइल को कैसे प्रिंट करें?




pretty-print (6)

आप इसे कमांड लाइन पर कर सकते हैं:

cat some.json | python -m json.tool

(जैसा कि पहले से ही टिप्पणी में टिप्पणियों में उल्लेख किया गया है)।

असल में पाइथन मेरा पसंदीदा टूल नहीं है जहां तक ​​कमांड लाइन पर जेसन प्रोसेसिंग संबंधित है। सरल सुंदर प्रिंटिंग के लिए ठीक है, लेकिन यदि आप जेसन में हेरफेर करना चाहते हैं तो यह अधिक जटिल हो सकता है। आपको जल्द ही एक अलग स्क्रिप्ट-फाइल लिखनी होगी, आप उन मानचित्रों के साथ समाप्त हो सकते हैं जिनकी चाबियाँ आप "कुछ-कुंजी" (पायथन यूनिकोड) हैं, जो फ़ील्ड को और अधिक कठिन चुनती है और वास्तव में सुंदर की दिशा में नहीं जाती -मुद्रण।

मैं jq उपयोग करता हूँ। उपरोक्त के साथ किया जा सकता है:

cat some.json | jq ''

और आपको बोनस के रूप में रंग मिलते हैं (और रास्ता आसान विस्तारशीलता)।

मेरे पास एक 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 उपयोग json.load :

with open('filename.txt', 'r') as handle:
    parsed = json.load(handle)

कमांड लाइन से सुंदर प्रिंट करने में सक्षम होने के लिए और इंडेंटेशन इत्यादि पर नियंत्रण रखने में सक्षम होने के लिए आप इस तरह के उपनाम सेट कर सकते हैं:

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 उपयोग कर सकते हैं।

जेसन डेटा के साथ फ़ाइल को कैसे पढ़ा जाए और इसे प्रिंट करें।

import json
import pprint

with open('filename.txt', 'r') as f:
    json_data = json.load(f.read())

pprint.pprint(json_data)

Pygmentize + पायथन json.tool = सिंटेक्स हाइलाइटिंग के साथ सुंदर प्रिंट

Pygmentize एक हत्यारा उपकरण है। यह देखो।

मैं pygmentize के साथ python json.tool गठबंधन

echo '{"foo": "bar"}' | python -m json.tool | pygmentize -l json

स्थापना निर्देश pygmentize के लिए उपरोक्त लिंक देखें।

इसका एक डेमो नीचे दी गई छवि में है:


इस फ़ंक्शन का उपयोग करें और याद रखें कि क्या आपका JSON एक str या फिर दोबारा है - बस सुंदर प्रिंट देखें:

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)




pretty-print