首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中使用pprint进行缩进?

如何在Python中使用pprint进行缩进?
EN

Stack Overflow用户
提问于 2015-03-09 16:22:25
回答 2查看 4.8K关注 0票数 6

我正在尝试缩进pprint的输出,以便使用pprint得到8个空格的缩进。我使用的代码是:

代码语言:javascript
复制
import numpy as np
from pprint import pprint
A = np.array([1, 2, 3, 4])
f = open("log.txt", 'w')
n = 2
for i in range(n):
    A = A + 1
    f.writelines(list(u'    \u27B3 - %s\n'.encode('utf-8') % i for i in A))
    pprint(globals())

输出

代码语言:javascript
复制
{'A': array([2, 3, 4, 5]),
 '__builtins__': <module '__builtin__' (built-in)>,
 '__doc__': None,
 '__file__': '~/Stack exchange/pprint_tab.py',
 '__name__': '__main__',
 '__package__': None,
 'f': <open file 'log.txt', mode 'w' at 0xb659b8b8>,
 'i': 0,
 'n': 2,
 'np': <module 'numpy' from '/usr/lib/python2.7/dist...,
 'pprint': <function pprint at 0xb6dea48c>}
{'A': array([3, 4, 5, 6]),
 '__builtins__': <module '__builtin__' (built-in)>,
 '__doc__': None,
 '__file__': '~/Stack exchange/pprint_tab.py',
 '__name__': '__main__',
 '__package__': None,
 'f': <open file 'log.txt', mode 'w' at 0xb659b8b8>,
 'i': 1,
 'n': 2,
 'np': <module 'numpy' from '/usr/lib/python2.7/dist...,
 'pprint': <function pprint at 0xb6dea48c>}

所需的输出

代码语言:javascript
复制
        {'A': array([2, 3, 4, 5]),
         '__builtins__': <module '__builtin__' (built-in)>,
         '__doc__': None,
         '__file__': '~/Stack exchange/pprint_tab.py',
         '__name__': '__main__',
         '__package__': None,
         'f': <open file 'log.txt', mode 'w' at 0xb659b8b8>,
         'i': 0,
         'n': 2,
         'np': <module 'numpy' from '/usr/lib/python2.7/dist...,
         'pprint': <function pprint at 0xb6dea48c>}
        {'A': array([3, 4, 5, 6]),
         '__builtins__': <module '__builtin__' (built-in)>,
         '__doc__': None,
         '__file__': '~/Stack exchange/pprint_tab.py',
         '__name__': '__main__',
         '__package__': None,
         'f': <open file 'log.txt', mode 'w' at 0xb659b8b8>,
         'i': 1,
         'n': 2,
         'np': <module 'numpy' from '/usr/lib/python2.7/dist...,
         'pprint': <function pprint at 0xb6dea48c>}

简而言之,在写入文件或使用pprint打印时,我需要一个空格缩进。我试过了

代码语言:javascript
复制
pp = pprint.PrettyPrinter(indent=8)

但是它不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-09 16:33:34

不能让pprint()添加额外的行距缩进,不能。

最好的选择是使用pprint.pformat() function,然后手动添加缩进:

代码语言:javascript
复制
from pprint import pformat

print ''.join([
    '        ' + l
    for l in pformat(globals()).splitlines(True)])

这将使用str.splitlines() methodpformat()输出拆分为不同的行,以便于重新联接。

在Python3中,可以使用textwrap.indent()进行缩进

代码语言:javascript
复制
from pprint import pformat
from textwrap import indent

print(indent(pformat(globals()),
             '        '))
票数 10
EN

Stack Overflow用户

发布于 2018-07-23 06:37:17

对Martijn的答案进行了微小的更新。不需要使用.format(),只要简单的字符串连接就可以了。

代码语言:javascript
复制
from pprint import pformat

def left_indent(text, indent=' ' * 8):
    return ''.join([indent + l for l in text.splitlines(True)])

print(indent(pformat(data)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28937664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档