Rob*_*bon 11 python json pretty-print
我正在寻找使用ASCII颜色在命令行中打印JSON,在python中.例如,(优秀)jq实用程序将使用粗体ASCII颜色着色JSON,如下所示:
curl --silent http://coinabul.com/api.php | jq .
有谁知道如何从Python实现这种效果?一些SO问题提供了一些关于使用python中的ASCII颜色的好信息(例如,使用Python在终端中打印颜色?),但这种效果需要以不同的方式将漂亮的印刷机械与着色机械相结合,我认为.
ker*_*rma 21
使用Pygments库:
import json
from pygments import highlight
from pygments.lexers import JsonLexer
from pygments.formatters import TerminalFormatter
json_object = json.loads('{"foo":"bar"}')
json_str = json.dumps(json_object, indent=4, sort_keys=True)
print(highlight(json_str, JsonLexer(), TerminalFormatter()))
Run Code Online (Sandbox Code Playgroud)
这应该可以帮助您开始(它以蓝色打印密钥):
import json
import urllib2
# ANSI color terminal escape sequences
OKBLUE = '\033[94m'
ENDC = '\033[0m'
def pretty(keyvals, indent=''):
print '{'
for key, val in keyvals.iteritems():
print '{} {}"{}"{}:'.format(indent, OKBLUE, key, ENDC),
if isinstance(val, dict):
pretty(val, indent + ' ')
elif isinstance(val, str):
print '"{}",'.format(val)
else:
print '{},'.format(val)
print indent + '},'
req = urllib2.Request('http://coinabul.com/api.php', headers={
'User-Agent': 'Mozilla/5.0',
})
page = urllib2.urlopen(req)
parsed = json.load(page)
pretty(parsed)
Run Code Online (Sandbox Code Playgroud)