VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • python数据格式化之pprint(2)

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)

相关教程