我在Jupyter笔记本中运行Python 2.7。我正在使用大型嵌套字典,有时打印其中一个是有帮助的。
使用pprint.pprint是在屏幕上获取可读版本的dict的好方法。但对于特别大的词典,这可能意味着打印一百万行,这会使笔记本崩溃(我认为我的浏览器无法处理它)。
在bash终端上,我习惯把东西扔进| head
,但似乎没有在python中这样做的通用方法。
我写过这个方法:
from pprint import pformat, pprint
def pprint_head(to_print,length=10)
formatted=pformat(to_print).splitlines()
pprint(formatted[:min(len(formatted),length)])
它有效,但我想知道
我也想知道是否有“Jupyter”解决方案(即告诉Jupyter只接受任何打印的前x行?)
答案 0 :(得分:1)
要获得与shell中的头管相同的结果,您可以在Python中轻松设置输出过滤器,因为pprint
仅使用其流的write
方法。它可能是:
class Head(object):
def __init__(self, lines, fd=sys.stdout):
self.lines = lines
self.fd = fd
def write(self, msg):
if self.lines <= 0: return
n = msg.count('\n')
if n < self.lines:
self.lines -= n
return self.fd.write(msg)
ix = 0
while(self.lines > 0):
iy = msg.find('\n', ix + 1)
self.lines -= 1
ix = iy
return self.fd.write(msg[:ix])
然后,您可以使用它来打印对象的n个第一行:
def pprint_head(to_print,length=10):
pprint(to_print, stream=Head(length))