python - كيفية طبع ملف JSON؟



pretty-print (5)

Pyceptionize + Python json.tool = طباعة جميلة مع تسليط الضوء على بناء الجملة

Pygmentize هو أداة القاتل. انظر الى هذا.

أنا الجمع بين peython json.tool مع pygmentize

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

انظر الرابط أعلاه للحصول على تعليمات التثبيت pygmentize.

عرض لهذا هو في الصورة أدناه:

https://code.i-harness.com

لدي ملف JSON عبارة عن فوضى أريد أن أجملها - ما أسهل طريقة للقيام بذلك في python؟ أعلم أن PrettyPrint تأخذ "كائن" ، والذي أعتقد أنه يمكن أن يكون ملفًا ، لكنني لا أعرف كيفية تمرير ملف - فقط لا يعمل اسم الملف.


إليك مثال بسيط على الطباعة الجميلة لـ JSON إلى وحدة التحكم بطريقة لطيفة في Python ، دون الحاجة إلى وجود JSON على جهاز الكمبيوتر الخاص بك كملف محلي:

import pprint
import json 
from urllib.request import urlopen # (Only used to get this example)

# Getting a JSON example for this example 
r = urlopen("https://mdn.github.io/fetch-examples/fetch-json/products.json")
text = r.read() 

# To print it
pprint.pprint(json.loads(text))

تقوم وحدة 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)

لتكون قادرة على طباعة جميلة من سطر الأوامر وتكون قادراً على التحكم في المسافة البادئة إلخ. يمكنك إعداد اسم مستعار مشابه لهذا:

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

يمكنك القيام بذلك على سطر الأوامر:

cat some.json | python -m json.tool

(كما سبق ذكره في التعليقات على السؤال).

في الواقع بيثون ليست أداتي المفضلة بقدر ما تشعر بالقلق مع معالجة جونسون على سطر الأوامر. لطباعة جميلة بسيطة على ما يرام ، ولكن إذا كنت تريد التلاعب في json يمكن أن تصبح أكثر تعقيدا. ستحتاج قريبًا إلى كتابة ملف نصي منفصل ، فقد ينتهي بك الأمر إلى الخرائط التي تكون مفاتيحها "مفتاحًا" (python unicode) ، مما يجعل اختيار الحقول أكثر صعوبة ولا يسير في اتجاه جميل -printing.

أنا استخدم jq . ما سبق يمكن القيام به مع:

cat some.json | jq ''

وتحصل على ألوان كمكافأة (وإمكانية تمديد أسهل).





pretty-print