How to make Ipython output a list without line breaks after elements?
Question:
The IPython console prints a list of elements with line breaks so that each element is displayed in its own line. This is usually a feature, but in my case it is a bug: I need to copy and paste long lists, so I need a compact representation. How can I achieve this?
Answers:
Start ipython
with --no-pprint
option.
$ 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']
Another options is to start ipython with --classic
option, in that pprint
is already disabled:
$ 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']
You can use %pprint
command to turn on/off pprint feature:
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]
If you want to turn off pprint
permanently, make a profile, and add c.PlainTextFormatter.pprint = False
to the profile file.
Linux example:
$ 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
An alternative to turning off pretty printing entirely is to increase the max_width
trait for the PlainTextFormatter
.
Add the following to ipython_config.py
(find it by ipython locate profile
):
c.PlainTextFormatter.max_width = 120
which will allow the pretty printer to use less vertical space by allowing lines to extend out to 120 characters rather than the default of 79.
The IPython console prints a list of elements with line breaks so that each element is displayed in its own line. This is usually a feature, but in my case it is a bug: I need to copy and paste long lists, so I need a compact representation. How can I achieve this?
Start ipython
with --no-pprint
option.
$ 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']
Another options is to start ipython with --classic
option, in that pprint
is already disabled:
$ 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']
You can use %pprint
command to turn on/off pprint feature:
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]
If you want to turn off pprint
permanently, make a profile, and add c.PlainTextFormatter.pprint = False
to the profile file.
Linux example:
$ 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
An alternative to turning off pretty printing entirely is to increase the max_width
trait for the PlainTextFormatter
.
Add the following to ipython_config.py
(find it by ipython locate profile
):
c.PlainTextFormatter.max_width = 120
which will allow the pretty printer to use less vertical space by allowing lines to extend out to 120 characters rather than the default of 79.