Как заставить pprint печатать один элемент списка/кортежа/слова в строке?

Как я могу заставить pprint() печатать один элемент списка/кортежа/слова в строке?

>>> from pprint import pprint
>>> my_var = ['one', 'two', ('red','green'), {'state' : 'Oregon', 'city' : 'Portland'}]
>>> pprint(my_var)
['one', 'two', ('red', 'green'), {'city': 'Portland', 'state': 'Oregon'}]

Я хотел бы, чтобы вывод был примерно таким:

['one',
 'two',
 ('red',
  'green'),
 {'city': 'Portland',
  'state': 'Oregon'}]

person Rob Bednark    schedule 21.03.2013    source источник


Ответы (1)


Используйте аргумент width=1 для pprint():

>>> from pprint import pprint
>>> my_var = ['one', 'two', ('red','green'), {'state' : 'Oregon', 'city' : 'Portland'}]
>>> pprint(my_var, width=1)
['one',
 'two',
 ('red',
  'green'),
 {'city': 'Portland',
  'state': 'Oregon'}]
>>>

документация "pprint — принтер данных"

person Rob Bednark    schedule 21.03.2013
comment
Это хорошо работает для относительно плоских объектов, но не работает по одному на строку для глубоко вложенных объектов, тогда как я хотел бы получить новую строку после каждой открывающей скобки. Например, попробуйте pprinting {u'a': {u'b': {u'c': {u'd': {u'foo': 1, u'bar': 2}}}}}. - person Taylor Edmiston; 25.07.2017
comment
@TaylorEdmiston, если ваш словарь может быть закодирован в json, то быстрый способ добиться этого - использовать: print(json.dumps(mydict, indent=2)) - person pnd; 28.06.2018
comment
Спасибо! Это заставило меня взглянуть на все параметры pprint... Я генерирую некоторый код Python с очень большими вложенными словарями, и я хотел иметь возможность печатать довольно длинные строки, но оборачивать их по ширине, которая не сделала бы мою IDE (Затмение) блюет. Я использовал width=4000 и compact=true. Конечно, хотелось бы, чтобы редактор Eclipse мог обрабатывать длинные строки... - person Neal Gokli; 07.09.2018