码迷,mamicode.com
首页 > 其他好文 > 详细

pprint模块解析

时间:2015-09-26 22:33:21      阅读:837      评论:0      收藏:0      [点我收藏+]

标签:

        pprint模块提供了打印任意python数据结构的方法,如果这个数据结构不是python的基本类型,则可能无法打印结果。
        pprint模块定义了一个类:
        pprint.PrettyPrinter(...)
        构造一个PrettyPrinter实例,通过stream参数设置输出流,默认为sys.stdout,其它三个可选参数用来控制输出格式,indent:缩进,默认为1;depth:控制输出的层数,如果要打印的的数据结构层数太多,超出的层数将以...输出,默认情况下,对输出层数是没有限制的;width,输出宽度,默认为80个字母。
        示例
  1. >>> import pprint
  2. >>> stuff = [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
  3. >>> stuff.insert(0, stuff[:])
  4. >>> pp = pprint.PrettyPrinter(indent=4)
  5. >>> pp.pprint(stuff)
  6. [ [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘],
  7. ‘spam‘,
  8. ‘eggs‘,
  9. ‘lumberjack‘,
  10. ‘knights‘,
  11. ‘ni‘]
  12. >>> tup = (‘spam‘, (‘eggs‘, (‘lumberjack‘, (‘knights‘, (‘ni‘, (‘dead‘,
  13. ... (‘parrot‘, (‘fresh fruit‘,))))))))
  14. >>> pp = pprint.PrettyPrinter(depth=6)
  15. >>> pp.pprint(tup)
  16. (‘spam‘, (‘eggs‘, (‘lumberjack‘, (‘knights‘, (‘ni‘, (‘dead‘, (...)))))))
        PrettyPrinter支持一下几种方法:
        pprint.pformat(object[, indent[, width[, depth]]])
        返回一个格式化的字符串
        pprint.pprint(object[, stream[, indent[, width[, depth]]]])
        在输出流中打印格式化信息,如果没有提供stream,则默认使用sys.out。
  1. >>> import pprint
  2. >>> stuff = [‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]
  3. >>> stuff.insert(0, stuff)
  4. >>> pprint.pprint(stuff)
  5. [<Recursion on list with id=...>,
  6. ‘spam‘,
  7. ‘eggs‘,
  8. ‘lumberjack‘,
  9. ‘knights‘,
  10. ‘ni‘]
        pprint.isreadable(object)
        判断对象的表示是否‘可读‘,如果是递归对象,则返回False
        pprint.isrecursive(object) 
        判断对象是否递归
        pprint.saferepr(object)
        返回对象的字符串表示,如果是递归对象,则用 <Recursion on typename with id=number>替代递归引用。
  1. >>> pprint.saferepr(stuff)
  2. "[<Recursion on list with id=...>, ‘spam‘, ‘eggs‘, ‘lumberjack‘, ‘knights‘, ‘ni‘]"
        1.PrettyPrinter对象
        PrettyPrinter对象有以下几种方法。
        PrettyPrinter.pformat(object)
        PrettyPrinter.pprint(object)
        PrettyPrinter.isreadable(object)
        PrettyPrinter.isrecursive(object) 
        PrettyPrinter.format(object, context, maxlevels, level) 
        返回三个参数,一个是格式化字符串,一个判断结果是否可读的标志,一个判断对象是否递归的标志。第一个参数是要格式化输出的对象,
        2.pprint示例
  1. >>> import pprint
  2. >>> tup = (‘spam‘, (‘eggs‘, (‘lumberjack‘, (‘knights‘, (‘ni‘, (‘dead‘,
  3. ... (‘parrot‘, (‘fresh fruit‘,))))))))
  4. >>> stuff = [‘a‘ * 10, tup, [‘a‘ * 30, ‘b‘ * 30], [‘c‘ * 20, ‘d‘ * 20]]
  5. >>> pprint.pprint(stuff)
  6. [‘aaaaaaaaaa‘,
  7. (‘spam‘,
  8. (‘eggs‘,
  9. (‘lumberjack‘,
  10. (‘knights‘, (‘ni‘, (‘dead‘, (‘parrot‘, (‘fresh fruit‘,)))))))),
  11. [‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa‘, ‘bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb‘],
  12. [‘cccccccccccccccccccc‘, ‘dddddddddddddddddddd‘]]
  13. >>> pprint.pprint(stuff, depth=3)
  14. [‘aaaaaaaaaa‘,
  15. (‘spam‘, (‘eggs‘, (...))),
  16. [‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa‘, ‘bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb‘],
  17. [‘cccccccccccccccccccc‘, ‘dddddddddddddddddddd‘]]
  18. >>> pprint.pprint(stuff, width=60)
  19. [‘aaaaaaaaaa‘,
  20. (‘spam‘,
  21. (‘eggs‘,
  22. (‘lumberjack‘,
  23. (‘knights‘,
  24. (‘ni‘, (‘dead‘, (‘parrot‘, (‘fresh fruit‘,)))))))),
  25. [‘aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa‘,
  26. ‘bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb‘],
  27. [‘cccccccccccccccccccc‘, ‘dddddddddddddddddddd‘]]








pprint模块解析

标签:

原文地址:http://www.cnblogs.com/fireflow/p/4841431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!