pprint的替代品,实际上很漂亮
项目描述
现在支持Python 3!
安装
pprint++ 可以使用Python 2或Python 3通过 pip 或 easy_install 安装
$ pip install pprintpp - OR - $ easy_install pprintpp
使用方法
pprint++ 可以通过以下三种方式使用
通过独立的 pp 包
$ pip install pp-ez $ python ... >>> import pp >>> pp(["Hello", "world"]) ["Hello", "world"]
更多内容,请参阅 https://pypi.python.org/pypi/pp-ez
作为一个命令行程序,它将从标准输入读取Python字面量并将其格式化打印
$ echo "{'hello': 'world'}" | pypprint {'hello': 'world'}
作为一个 ipython 扩展
In [1]: %load_ext pprintpp
这将使用pprintpp为ipython的输出。
要加载此扩展以在ipython启动时运行,请将上一行放入您的 启动文件 中。
您可以通过以下方式更改缩进级别
In [2]: %config PPrintPP.indentation = 4
要模拟pprint
>>> import pprintpp >>> pprintpp.monkeypatch() >>> import pprint >>> pprint.pprint(...)
注意:原始的 pprint 模块可以通过 import pprint_original 使用。另外,如果已经导入了 pprint,则会发出警告。可以通过传递 quiet=True 来抑制此警告。
并且,如果您真的想的话,甚至可以将其作为常规模块导入
>>> import pprintpp >>> pprintpp.pprint(...)
实用性提示
pp
为了获得额外的代码美观性,可以将 pprintpp.pprint 导入为 pp
>>> from pprintpp import pprint as pp
>>> pp(...)
如果字母实在太多,可以从 PyPI 安装 pp-ez 包,确保美观打印永远不会超过一个 import pp 的距离。
$ pip install pp-ez $ python ... >>> import pp >>> pp(["Hello", "world"]) ["Hello", "world"]
更多内容,请参阅 https://pypi.python.org/pypi/pp-ez
为什么更美观?
与 pprint 不同,pprint++ 努力输出可读性强的、基本上符合 PEP8 规范的输入表示。
它还明确支持:collections 模块(defaultdict 和 Counter)和 numpy 数组。
>>> import numpy as np
>>> from collections import defaultdict, Counter
>>> pprint([np.array([[1,2],[3,4]]), defaultdict(int, {"foo": 1}), Counter("aaabbc")])
[
array([[1, 2],
[3, 4]]),
defaultdict(<type 'int'>, {'foo': 1}),
Counter({'a': 3, 'b': 2, 'c': 1}),
]
如果可能,Unicode 字符将不会被转义打印。这通过检查输出流的编码(默认为 utf-8)和字符的 Unicode 类别来完成。努力打印仅视觉上无歧义的字符:字母和数字将被无转义打印,空格、组合字符和控制字符将被转义。
>>> unistr = u"\xe9e\u0301"
>>> print unistr
éé
>>> pprint(unistr)
u'ée\u0301'
还会考虑输出流的编码。
>>> import io
>>> stream = io.BytesIO()
>>> stream.encoding = "ascii"
>>> pprint(unistr, stream=stream)
>>> print stream.getvalue()
u'\xe9e\u0301'
未定义新 __repr__ 的内置收集类型子类将在它们的 repr 中明确添加类名。例如
>>> class MyList(list):
... pass
...
>>> pprint(MyList())
MyList()
>>> pprint(MyList([1, 2, 3]))
MyList([1, 2, 3])
请注意,正如您所期望的,自定义 __repr__ 方法将被尊重。
>>> class MyList(list):
... def __repr__(self):
... return "custom repr!"
...
>>> pprint(MyList())
custom repr!
注意:pprint++ 仍在开发中,因此格式 将会 随时间变化和改进。
示例
使用 printpp
>>> import pprintpp
>>> pprintpp.pprint(["Hello", np.array([[1,2],[3,4]])])
[
'Hello',
array([[1, 2],
[3, 4]]),
]
>>> pprintpp.pprint(tweet)
{
'coordinates': None,
'created_at': 'Mon Jun 27 19:32:19 +0000 2011',
'entities': {
'hashtags': [],
'urls': [
{
'display_url': 'tumblr.com/xnr37hf0yz',
'expanded_url': 'http://tumblr.com/xnr37hf0yz',
'indices': [107, 126],
'url': 'https://#/cCIWIwg',
},
],
'user_mentions': [],
},
'place': None,
'source': '<a href="http://www.tumblr.com/" rel="nofollow">Tumblr</a>',
'truncated': False,
'user': {
'contributors_enabled': True,
'default_profile': False,
'entities': {'hashtags': [], 'urls': [], 'user_mentions': []},
'favourites_count': 20,
'id_str': '6253282',
'profile_link_color': '0094C2',
},
}
不使用 printpp
>>> import pprint >>> import numpy as np >>> pprint.pprint(["Hello", np.array([[1,2],[3,4]])]) ['Hello', array([[1, 2], [3, 4]])] >>> tweet = {'coordinates': None, 'created_at': 'Mon Jun 27 19:32:19 +0000 2011', 'entities': {'hashtags': [], 'urls': [{'display_url': 'tumblr.com/xnr37hf0yz', 'expanded_url': 'http://tumblr.com/xnr37hf0yz', 'indices': [107, 126], 'url': 'https://#/cCIWIwg'}], 'user_mentions': []}, 'place': None, 'source': '<a href="http://www.tumblr.com/" rel="nofollow">Tumblr</a>', 'truncated': False, 'user': {'contributors_enabled': True, 'default_profile': False, 'entities': {'hashtags': [], 'urls': [], 'user_mentions': []}, 'favourites_count': 20, 'id_str': '6253282', 'profile_link_color': '0094C2'}} >>> pprint.pprint(tweet) {'coordinates': None, 'created_at': 'Mon Jun 27 19:32:19 +0000 2011', 'entities': {'hashtags': [], 'urls': [{'display_url': 'tumblr.com/xnr37hf0yz', 'expanded_url': 'http://tumblr.com/xnr37hf0yz', 'indices': [107, 126], 'url': 'https://#/cCIWIwg'}], 'user_mentions': []}, 'place': None, 'source': '<a href="http://www.tumblr.com/" rel="nofollow">Tumblr</a>', 'truncated': False, 'user': {'contributors_enabled': True, 'default_profile': False, 'entities': {'hashtags': [], 'urls': [], 'user_mentions': []}, 'favourites_count': 20, 'id_str': '6253282', 'profile_link_color': '0094C2'}}
项目详情
下载文件
为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。