如何使Ipython输出一个列表后没有换行符?

时间:2013-09-25 16:11:50

标签: python list ipython ipython-notebook

IPython控制台打印带有换行符的元素列表,以便每个元素都显示在自己的行中。这通常是一个功能,但在我的情况下它是一个错误:我需要复制和粘贴长列表,所以我需要一个紧凑的表示。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:38)

您可以使用%pprint命令打开/关闭pprint功能:

In [1]: range(24)
Out[1]:
[0,
 1,
 2,
 ...
 21,
 22,
 23]

In [2]: %pprint
Pretty printing has been turned OFF

In [3]: range(24)
Out[3]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]

如果您想永久关闭pprint,请创建个人资料,并将c.PlainTextFormatter.pprint = False添加到个人资料文件中。

Linux示例:

$ ipython profile create
[ProfileCreate] Generating default config file: '.../ipython_config.py'
[ProfileCreate] Generating default config file: u'..../ipython_notebook_config.py'
$ echo 'c.PlainTextFormatter.pprint = False' >> ~/.ipython/profile_default/ipython_config.py

答案 1 :(得分:4)

使用ipython选项启动--no-pprint

$ ipython --no-pprint
...
IPython 0.13.2 -- An enhanced Interactive Python.
...
In [1]: lis = ['a'*10]*10

In [2]: lis
Out[2]: ['aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa']

另一个选择是使用--classic选项启动ipython,因为pprint已被禁用:

$ ipython --classic
...
IPython 0.13.2 -- An enhanced Interactive Python.
...
>>> lis = ['a'*10]*10
>>> lis
['aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa']

答案 2 :(得分:1)

完全关闭漂亮打印的替代方法是增加max_width的{​​{1}}特征。

将以下内容添加到PlainTextFormatter(由ipython_config.py找到):

ipython locate profile

这将允许漂亮的打印机使用更少的垂直空间,允许行扩展到120个字符,而不是默认值79.