Есть ли симпатичный принтер для данных на Python?

При интерактивной работе с python иногда необходимо отобразить результат, представляющий собой произвольно сложную структуру данных (например, списки со встроенными списками и т. д.). По умолчанию они отображаются в виде одного массивного линейного дампа, который просто повторяется снова и снова, и вы должны внимательно его проанализировать, чтобы прочитать его.

Есть ли что-то, что возьмет любой объект Python и отобразит его более рациональным образом. например

[0, 1,
    [a, b, c],
    2, 3, 4]

вместо:

[0, 1, [a, b, c], 2, 3, 4]

Я знаю, что это не очень хороший пример, но думаю, вы уловили идею.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
18
0
10 750
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

from pprint import pprint
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
pprint(a)

Обратите внимание, что для такого короткого списка, как мой пример, pprint фактически напечатает все в одной строке. Однако для более сложных структур он довольно хорошо справляется с хорошей печатью данных.

Другой хороший вариант - использовать IPython, интерактивную среду с множеством дополнительных функций, включая автоматическую красивую печать, завершение методов с помощью табуляции, простой доступ к оболочке и многое другое. Его также очень легко установить.

Руководство по IPython

Для записи, я считаю, что IPython использует pprint для печати, поэтому, если вы хотите печатать такие вещи, как IPython, в своей собственной программе, вам нужен pprint.

Ryan C. Thompson 05.11.2009 04:57

Ну, также можете импортировать оболочку ipython в свою программу. Я указываю на ipython, потому что он имеет много других полезных функций, помимо красивой печати.

Gregg Lind 05.11.2009 17:27

Иногда для этого может пригодиться YAML.

import yaml
a = [0, 1, ['a', 'b', 'c'], 2, 3, 4]
print yaml.dump(a)

Производит:

- 0
- 1
- [a, b, c]
- 2
- 3
- 4

В дополнение к pprint.pprint, pprint.pformat действительно полезен для создания читаемых __repr__. Мои сложные __repr__ обычно выглядят так:

def __repr__(self):
    from pprint import pformat

    return "<ClassName %s>" % pformat({"attrs":self.attrs,
                                       "that_i":self.that_i,
                                       "care_about":self.care_about})

pprint (x) - это просто «print pformat (x)», поэтому вы можете получить доступ к тому, что pprint распечатывает в виде строки. иногда очень полезно

Rory 20.01.2014 15:40

Другие вопросы по теме