python数据格式化之pprint

STM32G0实战:HAL库与LL库Flash操作避坑指南(附HardFault解决方案) 本文深入剖析了STM32G0系列微控制器在Flash操作中常见的HardFault问题,对比了HAL库与LL库在读写擦除操作上的底层差异与潜在陷阱。文章提供了基于寄存器状态分析的精准调试方法,并给出了经过实战检验的解决方案与健壮的代码框架,帮助开发者有效规避数据丢失与系统崩溃风险。 阅读详情

简介

pprint模块 提供了打印出任何Python数据结构类和方法。

模块方法:

1.class pprint.PrettyPrinter(indent=1,width=80,depth=None, stream=None)     

   创建一个PrettyPrinter对象

    indent --- 缩进,width --- 一行最大宽度,

    depth --- 打印的深度,这个主要是针对一些可递归的对象,如果超出指定depth,其余的用"..."代替。

                 eg: a=[1,2,[3,4,],5]  a的深度就是2; b=[1,2,[3,4,[5,6]],7,8] b的深度就是3

    stream ---指输出流对象,如果stream=None,那么输出流对象默认是sys.stdout

2.pprint.pformat(object,indent=1,width=80, depth=None) 

   返回格式化的对象字符串

3.pprint.pprint(object,stream=None,indent=1, width=80, depth=None) 

  输出格式的对象字符串到指定的stream,最后以换行符结束。

4.pprint.isreadable(object) 

   判断对象object的字符串对象是否可读

5.pprint.isrecursive(object) 

   判断对象是否需要递归的表示

   eg: pprint.isrecursive(a)  --->False

        pprint.isrecursive([1,2,3])-->True

6.pprint.saferepr(object) 

   返回一个对象字符串,对象中的子对象如果是可递归的,都被替换成<Recursionontypename withid=number>.这种形式。


PrettyPrinter 对象具有的方法与上面类似,不在赘述。

[python]  view plain  copy
  1. import pprint  
  2.   
  3. data = (  
  4.     "this is a string", [1, 2, 3, 4], ("more tuples",  
  5.     1.0, 2.3, 4.5), "this is yet another string"  
  6.     )  
  7.   
  8. pprint.pprint(data)  

输出:

('this is a string',
[1, 2, 3, 4],
('more tuples', 1.0, 2.3, 4.5),
'this is yet another string')


pprint – 美观打印

作用:美观打印数据结构

pprint 包含一个“美观打印机”,用于生成数据结构的一个美观视图。格式化工具会生成数据结构的一些表示,不仅可以由解释器正确地解析,而且便于人类阅读。输出尽可能放在一行上,分解为多行时则需要缩进。

以下实例用用到的data包含一下数据

data = [(1,{'a':'A','b':'B','c':'C','d':'D'}),

        (2,{'e':'E','f':'F','g':'G','h':'H',

            'i':'I','j':'J','k':'K','l':'L'

            }),

        ]

1、  打印

要使用这个模块,最简单的方法就是利用pprint()函数 

1
2
3
4
5
6
from  pprint  import  pprint
print  'PRINT:'
print  data
print 
print  'PPRINT:'
pprint(data)

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
PRINT :
[( 1 , { 'a' :  'A' ,  'c' :  'C' ,  'b' :  'B' ,  'd' :  'D' }), ( 2 , { 'e' :  'E' ,  'g' :  'G' ,  'f' :  'F' ,  'i' :  'I' ,  'h' :  'H' ,  'k' :  'K' ,  'j' :  'J' ,  'l' :  'L' })]
PPRINT:
[( 1 , { 'a' :  'A' ,  'b' :  'B' ,  'c' :  'C' ,  'd' :  'D' }),
  ( 2 ,
   { 'e' :  'E' ,
    'f' :  'F' ,
    'g' :  'G' ,
    'h' :  'H' ,
    'i' :  'I' ,
    'j' :  'J' ,
    'k' :  'K' ,
    'l' :  'L' })]

pprint()格式化一个对象,并把它写至一个数据流,这个数据流作为参数传入(或者是默认的sys.stdout)

注意为什么第二个字典中会显示一竖列,因为pprint打印支持8个对象以上的竖列打印

 

2、  格式化

格式化一个数据结构而不把它直接写至一个流(例如用于日志记录),可以使用pformat()来构造一个字符串表示。 

1
2
3
4
5
6
7
8
9
import  logging
from  pprint  import  pformat
logging.basicConfig(level  =  logging.DEBUG,
                     format  =  '%(levelname)-8s %(message)s' ,
                     )
logging.debug( 'Logging pformatted data' )
formatted  =  pformat(data)
for  line  in  formatted.splitlines():
     logging.debug(line.rstrip())

运行结果:

1
2
3
4
5
6
7
8
9
10
11
DEBUG    Logging pformatted data
DEBUG    [( 1 , { 'a' :  'A' ,  'b' :  'B' ,  'c' :  'C' ,  'd' :  'D' }),
DEBUG     ( 2 ,
DEBUG      { 'e' :  'E' ,
DEBUG        'f' :  'F' ,
DEBUG        'g' :  'G' ,
DEBUG        'h' :  'H' ,
DEBUG        'i' :  'I' ,
DEBUG        'j' :  'J' ,
DEBUG        'k' :  'K' ,
DEBUG        'l' :  'L' })]

然后可以单独低打印格式化的字符串或者计入日志

splitlines() 按行分割()

rstrip()去除右边的空格 lstrip()去除左边的空格 strip()去除两边空格。默认为去除空格,也可以传入需要从两边或者其中一边去除的字符,如strip(‘a’)就是去除字符串两边的字符’a’

3、  任意类

如果定制类定义了一个__repr__()方法,pprint()使用的PrettyPrinter类还可以处理这些定制类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from  pprint  import  pprint 
class  node( object ):
     def  __init__( self ,name,contents  = []):
         self .name  =  name
         self .contents  =  contents[:]
     def  __repr__( self ):
         return  ( 'node('  +  repr ( self .name)  +  ','  +
                 repr ( self .contents)  +  ')'
                 )
trees  =  [node( 'node-1' ),
          node( 'node-2' ,[node( 'node-2-1' )]),
          node( 'node-3' ,[node( 'node-3-1' )]),         
          ]
pprint(trees)

运行结果:

1
2
3
[node( 'node-1' ,[]),
  node( 'node-2' ,[node( 'node-2-1' ,[])]),
  node( 'node-3' ,[node( 'node-3-1' ,[])])]

由PrettyPrinter组合嵌套对象的表示,从而返回完整字符串表示。

 4、  递归

递归数据结构有指向原数据源的引用来表示,形式为<Recursion on typename with id=number>。 

1
2
3
4
5
6
from  pprint  import  pprint 
local_data  =  [ 'a' , 'b' , 1 , 2 ]
local_data.append(local_data)
print  'id(local_data) =>' , id (local_data)
pprint(local_data)
print  local_data

运行结果:

1
2
3
id (local_data)  = >  47458332363520
[ 'a' ,  'b' ,  1 ,  2 , <Recursion on  list  with  id = 47458332363520 >]
[ 'a' ,  'b' ,  1 ,  2 , [...]]

在这个例子中,列表local_data增加到了其自身,这会创建一个递归引用

内置函数id()作用是获得对象的id值,理论上讲每个对象都有一个id值,如果是整数和字符串((相对较小的时候)),那么相同的值会有相同的id值,但是如果是类,及时相同也会有不同的id值。测试如下: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#int or float or lon 都一样(比较小的时候)
a  =  65464131311513l
b  =  65464131311513l
c  =  65464131311513l
print  id (a)
print  id (b)
print  id (c)
print
a  =  '12312312'
b  =  '12312312'
c  =  '12312312'
print  id (a)
print  id (b)
print  id (c)
print 
a  =  65464131311513l * 11
b  =  65464131311513l * 11
c  =  65464131311513l * 11
print  id (a)
print  id (b)
print  id (c)
print
a  =  '12312312' * 11
b  =  '12312312' * 11
c  =  '12312312' * 11
print  id (a)
print  id (b)
print  id (c)
print 
class  Test( object ):
     def  __init__( self ):
         pass
a  =  Test()
b  =  Test()
c  =  Test()
print  id (a)
print  id (b)
print  id (c)
print

测试结果:

47010342174992

47010342174992

47010342174992


47010343272096

47010343272096

47010343272096


47010343261568

47010343261648

47010343261688


47010343200944

47010343199152

47010343202352


47010343252304

47010343252944

47010343253008

5、  限制嵌套输出

对于非常深的数据结构,可能不要求输出包含所有细节。有可能数据没有是当地格式化,也可能格式化文本过大而无法管理,或者默写数据时多余的。 

1
2
3
4
5
6
7
8
9
from  pprint  import  pprint 
print  'depth 1 :'
pprint(data,depth = 1 )
print 
print  'depth 2 :'
pprint(data,depth = 2 )
print 
print  'depth 3 :'
pprint(data,depth = 3 )

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
depth  1  :
[(...), (...)]
depth  2  :
[( 1 , {...}), ( 2 , {...})]
depth  3  :
[( 1 , { 'a' :  'A' ,  'b' :  'B' ,  'c' :  'C' ,  'd' :  'D' }),
  ( 2 ,
   { 'e' :  'E' ,
    'f' :  'F' ,
    'g' :  'G' ,
    'h' :  'H' ,
    'i' :  'I' ,
    'j' :  'J' ,
    'k' :  'K' ,
    'l' :  'L' })]

使用depth参数可以控制美观打印机递归处理嵌套数据结构的深度。输出中未包含的层次由一个省略号表示 

6、  控制输出宽度

格式化文本的默认输出宽度为80列。要调整这个宽度,可以再pprint()中使用参数width。 

1
2
3
4
5
from  pprint  import  pprint
for  width  in  [ 80 , 5 ]:
     print  'WIDTH = ' , width
     pprint(data,width  =  width)
     print

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
WIDTH  =   80
[( 1 , { 'a' :  'A' ,  'b' :  'B' ,  'c' :  'C' ,  'd' :  'D' }),
  ( 2 ,
   { 'e' :  'E' ,
    'f' :  'F' ,
    'g' :  'G' ,
    'h' :  'H' ,
    'i' :  'I' ,
    'j' :  'J' ,
    'k' :  'K' ,
    'l' :  'L' })]
WIDTH  =   5
[( 1 ,
   { 'a' :  'A' ,
    'b' :  'B' ,
    'c' :  'C' ,
    'd' :  'D' }),
  ( 2 ,
   { 'e' :  'E' ,
    'f' :  'F' ,
    'g' :  'G' ,
    'h' :  'H' ,
    'i' :  'I' ,
    'j' :  'J' ,
    'k' :  'K' ,
    'l' :  'L' })]

宽度大小不能适应格式化数据结构时,如果斩断或转行会引入非法的语法,就不会进行截断或转行

电子货架标签应用浅析(ESL) ​【 关注与分享,是对原创最大的鼓励 】 年底了,会断续介绍几个主要的BLE的应用及市场情况,这篇文章介绍的是电子货架标签, ESL (Electronic Shelf Label)。 文章将从应用简介,市场规模,产业链,头部玩家及系统框架进行介绍。只对技术感兴趣的可以直接拉到底。 ESL简介 ESL,是一种显示产品,其主要是替代传统的纸质标签,应用于大型商超,... 阅读详情

相关推荐

Isograph Reliability Workbench 14实战:从零构建故障树分析模型

本文以“马达不转”为例,手把手教你使用Isograph Reliability Workbench 14从零构建故障树分析模型。内容涵盖创建工程、定义顶事件、添加逻辑门与基础事件等核心步骤,并介绍了模型检查与定性定量分析,帮助你系统掌握这一强大的可靠性工程工具。

weixin_29309213的博客 365

一文弄懂Python中的pprint

1. 引言 pprint的英文全称Data pretty printer,顾名思义就是让显示结果更加直观漂亮。 print()和pprint()都是python的打印模块,功能基本一样,唯一的区别就是pprint()模块打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。特别是对于特别长的数据打印,print()输出结果都在一行,不方便查看,而pprint()采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,适合采用pprint()打印方式。 在介绍完上述理论知识后,我们

sgzqc的专栏 8763

从零抓包分析AVDTP:用Wireshark解密蓝牙音频传输全流程

本文详细介绍了如何使用Wireshark抓包工具分析AVDTP协议,解密蓝牙音频传输的全流程。从实验环境搭建到信令交互解析,再到媒体流传输深度分析,逐步揭示蓝牙音频传输的技术本质,帮助开发者深入理解AVDTP协议的工作机制。

sun99的博客 204

python中的pprint

python中的pprint,更美观的打印

twinkle的博客 1759

避坑指南:解决‘Logical volume contains a filesystem in use’错误,顺利完成LVM根目录扩容

本文详细解析了Linux系统中LVM根目录扩容时遇到的‘Logical volume contains a filesystem in use’错误,提供了从错误诊断到实战解决方案的完整指南。通过动态扩容技术、单用户模式操作和LVM快照等方案,帮助管理员顺利完成根目录扩容,避免数据丢失和系统崩溃。

weixin_28702105的博客 229

python画弗里德曼(Friedman) 检验和秩和检验(Nemenyi)检验图

python画弗里德曼(Friedman) 检验和秩和检验(Nemenyi)检验图 画好后效果图 实现代码如下 import matplotlib.pyplot as plt #算法平均排名 _alg_=[1.405,2.643,2.786,2.167] y=[1,2,3,4]#alg1,alg2,alg3,alg4 通过Nemenyi测试计算得到的临界值CD CD=1.024 h_CD=CD/2 plt.figure(figsize=(10,6)) plt.scatter(_alg_,y,s=10

大模型天花板 4465

Python pprint | 超级好用的Python库,漂亮的打印,让json数据提取体验更好

Python pprint | 超级好用的Python库,漂亮的打印,让json数据提取体验更好

叶庭云 成为自己的光 5849

机械臂开发必备:KDL库正逆解与动力学实战指南

在机器人算法领域,运动学与动力学计算是机械臂控制、仿真与轨迹规划的核心基础。正运动学描述关节空间到笛卡尔空间的映射,逆运动学则需要求解复杂的非线性方程,工程实现时常面临数值稳定性与调试效率的挑战。KDL(Kinematics and Dynamics Library)作为ROS生态中广泛使用的开源库,提供了统一的模型描述与高效求解器,将正逆解、雅可比矩阵及动力学参数计算封装为简洁接口,大幅降低开发门槛。无论是机械臂的笛卡尔空间轨迹跟踪,还是基于动力学模型的前馈控制,KDL都展现出强大的工程价值。本文从运动学

weixin_33860528的博客 2509

Python 基础 (标准库):pprint (数据美化输出)

python 标准库学习:pprint

AbigailQin 的博客 6204

如何修改网页中的文本内容改成自己希望的数值?

本篇文章主要讲解,通过浏览器命令和浏览器自带的F12开发者工具,进行修改网页内容的方法教程 日期:2021年12月5日 作者:任聪聪 一、通过F12开发者工具进行修改 进入方式汇总: 1.右击鼠标,显示菜单找到审查 2.通过快捷键F12进入,笔记本需要先关闭fnlk功能键。 开发者工具介绍 说明: 1.表示选择元素,点击后可以选择文本的元素所在地 2.表示显示方式,手机还是电脑 3.表示div元素,点击后可以展开,对div内的html和文本进行编辑。 双击文本,即可进行修改成自己想要的,但是刷新后.

任聪聪的博客 2万+

【OpenClaw从入门到精通】零基础入门——OpenClaw核心概念快速理解(2026入门版)

OpenClaw是一个强大的AI代理框架,旨在构建智能化的自动化任务处理系统。随着人工智能技术的快速发展,OpenClaw为开发者和企业提供了一个完整的解决方案,用于创建能够理解、学习和执行复杂任务的智能体。本文将带领零基础的读者快速理解OpenClaw的核心概念,从基础架构到实际应用,为后续深入学习奠定坚实基础。通过本文的学习,你将掌握OpenClaw的基本原理、核心组件和快速上手方法。

一键难忘的博客 329

Python 有用的库&模块

Python一些常见的库&模块总结。

SG_teresa's blog 1186

【系统分析师】第6章-基础知识:企业信息化(核心总结)

企业信息化是数字化转型的核心,涵盖战略规划、技术应用和实施路径等方面。关键内容包括ERP、CRM、SCM等系统的定义与实施,以及数据仓库、商业智能等技术的应用。备考系统分析师需掌握信息化战略规划方法(如BSP、SDP)、系统建模工具,并能分析解决信息孤岛等问题。论文可围绕ERP实施、数据仓库应用等主题展开。企业信息化面临组织变革、技术选型等挑战,但能显著提升运营效率和竞争力。

数据知道的博客 6938

python数据格式化_python数据格式化之pprint

简介pprint模块 提供了打印出任何Python数据结构类和方法。模块方法:1.classpprint.PrettyPrinter(indent=1,width=80,depth=None,stream=None)创建一个PrettyPrinter对象indent --- 缩进,width --- 一行最大宽度,depth --- 打印的深度,这个主要是针对一些可递归的对象,如果超出指定de...

weixin_39638086的博客 160

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python数据格式化_Python数据格式化pprint和pformat的简单示例

这篇文章主要为大家详细介绍了Python数据格式化pprint和pformat的简单示例,具有一定的参考价值,可以用来参考一下。对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!很多时候我们需要对数据进行格式化,你有没有对python中的数据格式化感到头疼呢?pprint会帮你很大的忙pprint模块中使用的格式化可以按照一种格式正确的显示数据, 这种格式即可被...

weixin_39641450的博客 255

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python pprint 文件,使用pprint模块格式化数据

Python的pprint模块中使用的格式化可以按照一种格式正确的显示数据, 这种格式即可被解析器解析, 又很易读. 输出保存在一个单行内, 但如果有必要, 在分割多行数据时也可使用缩进表示.importsysimportpprintpprint.pprint(sys.path)运行结果:['','/usr/local/lib/python27.zip','/usr/local/lib/pyt...

weixin_39953578的博客 172

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python 数字格式化_python数据格式化之pprint

pprint – 美观打印作用:美观打印数据结构pprint 包含一个“美观打印机”,用于生成数据结构的一个美观视图。格式化工具会生成数据结构的一些表示,不仅可以由解释器正确地解析,而且便于人类阅读。输出尽可能放在一行上,分解为多行时则需要缩进。以下实例用用到的data包含一下数据data = [(1,{'a':'A','b':'B','c':'C','d':'D'}),(2,{'e':'E','...

weixin_39542608的博客 86

python中pprint是干什么的_Python使用pprint模块格式化数据的简单示例

对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!Python的pprint模块中使用的格式化可以按照一种格式正确的显示数据,这种格式即可被解析器解析,又很易读. 输出保存在一个单行内,但如果有必要,在分割多行数据时也可使用缩进表示.# @param 使用pprint模块格式化数据# @author 编程之家 jb51.cc|jb51.ccimpo...

weixin_39552204的博客 124

python数据格式化之pprint(一)

转自:https://www.weidianyuedu.com/ pprint – 美观打印 作用:美观打印数据结构 pprint 包含一个“美观打印机”,用于生成数据结构的一个美观视图。格式化工具会生成数据结构的一些表示,不仅可以由解释器正确地解析,而且便于人类阅读。输出尽可能放在一行上,分解为多行时则需要缩进。 以下实例用用到的data包含一下数据 data = [(1,{‘a’:‘A’,‘b’:‘B’,‘c’:‘C’,‘d’:‘D’}), (2,{'e':'E','f':'F','g':'G'

xiaoyaozi2020的博客 198

Python字典数据格式化全攻略:从pprint到rich的实战技巧

在Python开发中,数据结构(如字典)的清晰展示是提升代码可读性和调试效率的关键。其核心原理在于通过格式化输出,将复杂嵌套的数据以层次化、可视化的方式呈现,从而快速理解数据结构和定位问题。这一技术价值不仅体现在本地开发调试阶段,更延伸至日志记录、配置文件生成和API响应美化等工程实践场景。针对不同的应用需求,开发者可以选用标准库的`pprint`模块进行基础美化,或使用`json.dumps`生成标准JSON格式,亦或是借助`rich`等第三方库实现终端富文本高亮。本文聚焦于Python字典的格式化显示,

weixin_34275734的博客 416

【Python】pprint 模块:以人类易读的方式格式化输出复杂的数据结构(如嵌套字典、列表)

pprint 是 Python 标准库中的模块,全称 “pretty print”,用于格式化输出复杂的数据结构(如字典、列表、嵌套对象),使其更易读。与内置的 print 函数相比,pprint 提供更好的排版,自动添加换行和缩进,尤其适合调试或展示嵌套数据结构。pprint 模块简单易用,广泛用于开发、数据分析和日志记录。

彬彬侠的博客 1696

python美化输出模块_解析使用pprint模块格式化数据

Python的pprint模块中使用的格式化可以按照一种格式正确的显示数据, 这种格式即可被解析器解析, 又很易读. 输出保存在一个单行内, 但如果有必要, 在分割多行数据时也可使用缩进表示.import sysimport pprintpprint.pprint(sys.path)运行结果:['','/usr/local/lib/python27.zip','/usr/local/lib/pyt...

weixin_39934257的博客 90
上一篇: 面试问题你有什么问题
下一篇: Spring Batch 之 Spring Batch 简介
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值