使用 Python 的 pprint库格式化和输出列表和字典的方法

 更新时间:2023年05月16日 11:08:43   作者:田辛 | 田豆芽  
pprint是"pretty-print"的缩写,使用 Python 的标准库 pprint 模块,以干净的格式输出和显示列表和字典等对象,这篇文章主要介绍了如何使用 Python 的 pprint库格式化和输出列表和字典,需要的朋友可以参考下

这两天, 田辛老师在进行几个OpenCV的项目, 涉及到大量的dict以及list内容的输出。 不多不说, python的print函数对于字典和列表的表示并不友好。 在此时,我们可以通过使用 Python 的标准库 pprint 模块,以干净的格式输出和显示列表和字典等对象。pprint 是“pretty-print”的缩写。

1 pprint的基本用法

普通print()函数将列表和字典的元素打印在一行上,没有换行符。例如,如下代码:

point_lst = [{'Name': '田辛', 'Age': 40, 'Points': [80, 20]}, {'Name': '张三', 'Age': 20, 'Points': [90, 10]},  
             {'Name': '李四', 'Age': 30, 'Points': [70, 30]}]
print(point_lst)
[{'Name': '田辛', 'Age': 40, 'Points': [80, 20]}, {'Name': '张三', 'Age': 20, 'Points': [90, 10]}, {'Name': '李四', 'Age': 30, 'Points': [70, 30]}]
进程已结束,退出代码0

这个输出其实是相当不友好的。 这个list但凡长一点看起来就非常的麻烦, 那么这种情况下使用pprint的方法就很方便:

pprint.pprint(point_lst)

输出的结果是:

[{'Age': 40, 'Name': '田辛', 'Points': [80, 20]},
 {'Age': 20, 'Name': '张三', 'Points': [90, 10]},
 {'Age': 30, 'Name': '李四', 'Points': [70, 30]}]

进程已结束,退出代码0

2 指定输出宽度(字符数):

width

2.1 例子:

pprint.pprint(point_lst, width=40)

输出结果是:

[{'Age': 40,
  'Name': '田辛',
  'Points': [80, 20]},
 {'Age': 20,
  'Name': '张三',
  'Points': [90, 10]},
 {'Age': 30,
  'Name': '李四',
  'Points': [70, 30]}]

进程已结束,退出代码0

2.2 特殊说明

如果你给的width值特别大, 比如400, 那么这个时候pprint会和print没有区别。

pprint.pprint(point_lst, width=400)

输出结果是:

[{'Age': 40, 'Name': '田辛', 'Points': [80, 20]}, {'Age': 20, 'Name': '张三', 'Points': [90, 10]}, {'Age': 30, 'Name': '李四', 'Points': [70, 30]}]

进程已结束,退出代码0

2.3 默认换行

默认情况下width会自动检查列表或者字典的元素是否适合输出, 如果不适合的话,他们将被换行。

pprint.pprint(list(range(10)))  
pprint.pprint(list(range(1000000, 1000010)))

输出结果是:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1000000,
 1000001,
 1000002,
 1000003,
 1000004,
 1000005,
 1000006,
 1000007,
 1000008,
 1000009]

进程已结束,退出代码0

2.4 紧凑换行:

compact=True

在默认换行中, 如果产生换行,列表的每个元素都会换行。 有的时候, 这种换行显示会过长。 在这种情况下, 可以使用紧凑换行。

pprint.pprint(list(range(1000000, 1000020)), compact=True)

输出结果是:

[1000000, 1000001, 1000002, 1000003, 1000004, 1000005, 1000006, 1000007,
 1000008, 1000009, 1000010, 1000011, 1000012, 1000013, 1000014, 1000015,
 1000016, 1000017, 1000018, 1000019]

进程已结束,退出代码0

3 指定要打印的元素的深度:

depth

您可以指定要输出的元素的深度depth作为参数。这里的深度就是嵌套数据的深度。

pprint.pprint(point_lst, depth=1)  
pprint.pprint(point_lst, depth=2)

输出结果是:

[{...}, {...}, {...}]
[{'Age': 40, 'Name': '田辛', 'Points': [...]},
 {'Age': 20, 'Name': '张三', 'Points': [...]},
 {'Age': 30, 'Name': '李四', 'Points': [...]}]

进程已结束,退出代码0

查看上面的执行结果, 你会发现, 对于超出depth深度的部分, 会直接用...表示。

4 制定缩进的宽度:

indent

通过设定indent可以指定缩进, 默认缩进为1, 读者可以仔细看刚的例子中, 第二行会有一个字符的缩进哦。

pprint.pprint(point_lst, width=4, indent=4)

输出结果是:

[   {   'Age': 40,
        'Name': '田辛',
        'Points': [   80,
                      20]},
    {   'Age': 20,
        'Name': '张三',
        'Points': [   90,
                      10]},
    {   'Age': 30,
        'Name': '李四',
        'Points': [   70,
                      30]}]

进程已结束,退出代码0

5 全部代码

老规矩, 全部代码奉上:

#!/usr/bin/env python  
# -*- coding:utf-8 -*-  
"""  
#-----------------------------------------------------------------------------  
#                     --- TDOUYA STUDIOS ---  
#-----------------------------------------------------------------------------  
#  
# @Project : di08-tdd-cdg-python-learning  
# @File    : pprint_learning.py  
# @Author  : tianxin.xp@gmail.com  
# @Date    : 2023/4/15 17:16  
#  
# pprint 示例程序  
#  
#--------------------------------------------------------------------------"""  
import pprint  
point_lst = [{'Name': '田辛', 'Age': 40, 'Points': [80, 20]}, {'Name': '张三', 'Age': 20, 'Points': [90, 10]},  
             {'Name': '李四', 'Age': 30, 'Points': [70, 30]}]  
print(point_lst)  
pprint.pprint(point_lst)  
pprint.pprint(point_lst, width=40)  
pprint.pprint(point_lst, width=400)  
pprint.pprint(list(range(10)))  
pprint.pprint(list(range(1000000, 1000010)))  
pprint.pprint(list(range(1000000, 1000020)), compact=True)  
pprint.pprint(point_lst, depth=1)  
pprint.pprint(point_lst, depth=2)  
pprint.pprint(point_lst, width=4, indent=4)

到此这篇关于如何使用 Python 的 pprint库格式化和输出列表和字典的文章就介绍到这了,更多相关Python pprint库格式化和输出列表和字典内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python开发中常用操作方法代码汇总笔记

    Python开发中常用操作方法代码汇总笔记

    Python具有易学、易用、易扩展、可移植性强等特点,被广泛应用于数据分析、人工智能、Web开发、自动化测试等领域。Python在使用过程中也会遇到一些常见技术问题,本文汇总Python开发中实用操作方法代码笔记。
    2023-06-06
  • Tensorflow中tf.ConfigProto()的用法详解

    Tensorflow中tf.ConfigProto()的用法详解

    今天小编就为大家分享一篇Tensorflow中tf.ConfigProto()的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python发送网络请求(requests)

    Python发送网络请求(requests)

    这篇文章主要介绍了Python发送网络请求(requests),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python工厂方法模式原理与实现

    python工厂方法模式原理与实现

    大家好,本篇文章主要讲的是python工厂方法模式原理与实现,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Django获取应用下的所有models的例子

    Django获取应用下的所有models的例子

    今天小编就为大家分享一篇Django获取应用下的所有models的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python3连接SQLServer、Oracle、MySql的方法

    Python3连接SQLServer、Oracle、MySql的方法

    这篇文章较详细的给大家介绍了Python3连接SQLServer、Oracle、MySql的方法,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-06-06
  • 自动在Windows中运行Python脚本并定时触发功能实现

    自动在Windows中运行Python脚本并定时触发功能实现

    讲一下在Python中写好了一个脚本之后,怎么自动双击一个程序自动就跑起来。以及,怎么在Windows 10中设计定期定时触发并跑脚本,有需要的朋友可以参考下
    2021-09-09
  • Python统计词频的几种方法小结

    Python统计词频的几种方法小结

    本文主要介绍了Python统计词频的几种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • selenium+PhantomJS爬取豆瓣读书

    selenium+PhantomJS爬取豆瓣读书

    这篇文章主要为大家详细介绍了selenium+PhantomJS爬取豆瓣读书,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 使用Python实现操作mongodb详解

    使用Python实现操作mongodb详解

    这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-01-01

最新评论