如何在REPL上默认启用pretty print?
目前我是通过pprint.pprint()
函数来实现的。
>>> pprint.pprint(data)
{'SHIP_CATEGORY': '',
'SHIP_QUANTITY': 1,
'SHIP_SEPARATELY': 0,
'SHIP_SUPPLEMENT': 0,
'SHIP_SUPPLEMENT_ONCE': 0,
'THUMBNAIL': ''}
但是我想默认打印出漂亮的图片
>>> data
{'SHIP_CATEGORY': '',
'SHIP_QUANTITY': 1,
'SHIP_SEPARATELY': 0,
'SHIP_SUPPLEMENT': 0,
'SHIP_SUPPLEMENT_ONCE': 0,
'THUMBNAIL': ''}
我都试了些什么?
我在谷歌上搜索过了。未找到任何内容大多数结果指向pprint
模块
发布于 2013-06-22 15:37:39
import pprint
import sys
orig_displayhook = sys.displayhook
def myhook(value):
if value != None:
__builtins__._ = value
pprint.pprint(value)
__builtins__.pprint_on = lambda: setattr(sys, 'displayhook', myhook)
__builtins__.pprint_off = lambda: setattr(sys, 'displayhook', orig_displayhook)
如果你不想在每次运行交互式外壳时都输入上面的代码,就把它放到PYTHONSTARTUP中。
用法:
>>> data = dict.fromkeys(range(10))
>>> data
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
>>> pprint_on()
>>> data
{0: None,
1: None,
2: None,
3: None,
4: None,
5: None,
6: None,
7: None,
8: None,
9: None}
>>> pprint_off()
>>> data
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
发布于 2013-06-22 15:34:20
使用IPython外壳:
In [10]: data = {'SHIP_CATEGORY': '', 'SHIP_QUANTITY': 1, 'SHIP_SEPARATELY': 0, 'SHIP_SUPPLEMENT': 0, 'SHIP_SUPPLEMENT_ONCE': 0,}
In [11]: data
Out[11]:
{'SHIP_CATEGORY': '',
'SHIP_QUANTITY': 1,
'SHIP_SEPARATELY': 0,
'SHIP_SUPPLEMENT': 0,
'SHIP_SUPPLEMENT_ONCE': 0}
它还有一个选项--no-pprint
,以防您想要禁用这种漂亮的打印。
python还有像features一样的制表符补全、多行粘贴、运行shell命令等,所以它比普通的python要好得多。
发布于 2019-06-24 00:29:55
基于falsetru's接受的答案,但以一行程序的形式:
from pprint import pprint
import sys
sys.displayhook = lambda x: exec(['_=x; pprint(x)','pass'][x is None])
然后换回来(基于基里尔的评论):
sys.displayhook = sys.__displayhook__
https://stackoverflow.com/questions/17248383
复制相似问题