python格式化输出dict等集合对象

调试程序的时候,如果需要打印出变量的信息,在python中很容易,一句print即可,他几乎可以打印任何类型的对象,不像PHP中,有一堆echo(),print(),print_r(),var_dump(),让人头疼!

但是PHP的打印函数有个好处,就是打印格式良好,而Python的打印信息就不是很友好了,如

# 模拟一个很大的键值对
dic = {}
for i in xrange(201):
    dic[i] = "value for %d" % i
print dic

其结果我就不打印了,总之很难看!
如何让python那冗长而且没有格式的打印变得更直观,方法有两种。

自定义dump

此方法来自stackoverflow

# 以后需要有格式的打印一个集合对象,直接使用dump(xxx)即可!
# 不要忘了import sys
import sys

def dump(obj, nested_level=0, output=sys.stdout):
    spacing = '   '
    if type(obj) == dict:
        print >> output, '%s{' % ((nested_level) * spacing)
        for k, v in obj.items():
            if hasattr(v, '__iter__'):
                print >> output, '%s%s:' % ((nested_level + 1) * spacing, k)
                dump(v, nested_level + 1, output)
            else:
                print >> output, '%s%s: %s' % ((nested_level + 1) * spacing, k, v)
        print >> output, '%s}' % (nested_level * spacing)
    elif type(obj) == list:
        print >> output, '%s[' % ((nested_level) * spacing)
        for v in obj:
            if hasattr(v, '__iter__'):
                dump(v, nested_level + 1, output)
            else:
                print >> output, '%s%s' % ((nested_level + 1) * spacing, v)
        print >> output, '%s]' % ((nested_level) * spacing)
    else:
        print >> output, '%s%s' % (nested_level * spacing, obj)

pprint

此方法来自官方,可以自定义缩进,宽度等信息。

import pprint

dic = {}
for i in xrange(201):
    dic[i] = "value for %d" % i

# 自定义缩进为4空格
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(dic)

推荐官方的pprint,自定义格式很不错!


原文地址:https://blog.phpgao.com/python_print_formatted.html




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值