繁体   English   中英

在python中使用ASCII颜色打印漂亮的JSON

[英]Pretty-printing JSON with ASCII color in python

我正在寻找使用ASCII颜色在命令行中打印JSON,在python中。 例如,(优秀的) jq实用程序将使用粗体ASCII颜色着色JSON,如下所示:

  • 输入: curl --silent http://coinabul.com/api.php | jq . curl --silent http://coinabul.com/api.php | jq .
  • 输出:
    jq输出

有谁知道如何从Python实现这种效果? 一些SO问题提供了一些关于使用python中的ASCII颜色的好信息(例如,使用Python在终端中打印颜色? ),但这种效果需要以不同的方式将漂亮的印刷机械与着色机械相结合,我认为。

使用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()))

这应该让你开始(它以蓝色打印键):

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM