在python中使用ASCII颜色打印JSON
我希望用python将JSON打印到命令行,使用ASCII颜色。例如,(优秀)在python中使用ASCII颜色打印JSON,python,json,pretty-print,Python,Json,Pretty Print,我希望用python将JSON打印到命令行,使用ASCII颜色。例如,(优秀)jq实用程序将使用粗体ASCII颜色为JSON着色,如下所示: 输入:curl——静默http://coinabul.com/api.php |jq. 输出: 有人知道如何从Python实现这种效果吗?有几个问题提供了一些关于使用python中的ASCII颜色的好信息(例如),但我认为这种效果需要以不同的方式将漂亮的打印机制与着色机制结合起来。这应该让您开始(它以蓝色打印键): 使用图书馆: 如果可以避免重新发
jq
实用程序将使用粗体ASCII颜色为JSON着色,如下所示:
- 输入:
curl——静默http://coinabul.com/api.php |jq.
- 输出:
有人知道如何从Python实现这种效果吗?有几个问题提供了一些关于使用python中的ASCII颜色的好信息(例如),但我认为这种效果需要以不同的方式将漂亮的打印机制与着色机制结合起来。这应该让您开始(它以蓝色打印键): 使用图书馆:
如果可以避免重新发明所有漂亮的打印(缩进)逻辑,那就太好了。好吧,你可以使用
json.dumps(parsed,indent=2)
然后解析它提供给你的文本并将其着色……我认为这更糟(更容易出错,等等)。如果你要找的是一个为你做所有这些的库,那么,我认为它不存在。我必须这样导入:来自pygments.lexers.data import JsonLexer
来自pygments.formatters.terminal import TerminalFormatter
TerminalFormatter()
还有样式选项,比如TerminalFormatter(style='monokia')
。如何查看所有样式名称的列表,以便我可以尝试them@SanthoshYedidi请看这里:
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)
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()))