Как использовать pprint для красивого вывода данных?
Красивый вывод структур данных в Python с помощью pprint
by Ian Currie
Понимание необходимости красивого вывода в Python
Прежде чем приступить к изучению pprint
, вы сначала будете использовать модуль urllib
, чтобы выполнить запрос и получить некоторые данные. Вы сделаете запрос к JSON Placeholder для получения некоторой фиктивной информации о пользователях. Сначала нужно выполнить HTTP-запрос GET
и поместить полученный ответ в словарь:
Здесь вы делаете простой GET
-запрос, а затем разбираете ответ в словарь с помощью json.loads()
. Созданный словарь хранится в переменной. Часто следующим шагом является печать содержимого словаря с помощью print()
:
Теперь вы увидите, что вывод становится более читаемым:
Как вы видите, вывод структуры данных стал более приятным для чтения благодаря отступам и переносам строк.
Изучение необязательных параметров pprint()
pprint()
также позволяет использовать дополнительные необязательные параметры для настройки вывода.
Суммирование данных: глубина
Параметр depth
позволяет управлять глубиной вывода структуры данных. Вы можете задать максимальное количество вложенных уровней, которые должны быть отображены. Если установить depth=1
, то будут отображены только первый уровень вложенности:
Вывод:
Как видно, все вложенные структуры данных были заменены многоточием {...}
.
Отступ
Параметр indent
задает количество пробелов для каждого уровня вложенности. По умолчанию используется значение indent=1
. Если установить значение indent=4
, то отступы будут больше:
Вывод:
Теперь вы видите, что отступы состоят из 4 пробелов для каждого уровня вложенности.
Ограничение длины строк
Параметр width
позволяет ограничить длину выводимых строк. Если строка превышает указанное значение, она будет разбита на несколько строк. По умолчанию значение width
не задано. Вот пример с ограниченной длиной строк width=40
:
Вывод:
Вы можете видеть, что строки в словаре разбиты на несколько строк, чтобы удержаться в пределах ширины в 40 символов.
Уплотнение длинных последовательностей
Параметр compact
позволяет управлять выводимым форматом для длинных последовательностей, таких как списки или кортежи. Если установить значение compact=True
, то длинные последовательности будут выводиться в строчку, без добавления новых строк:
Вывод:
Как вы видите, все последовательности выводятся в одну строку без переносов.
Направление вывода: поток
Параметр stream
позволяет указать файл, в который будет осуществляться вывод. По умолчанию, вывод происходит в стандартный поток вывода sys.stdout
. Однако, вы можете указать свой собственный файл, например:
В этом примере вывод будет записан в файл output.txt
вместо стандартного потока вывода.
Отключение сортировки словарей
По умолчанию, pprint
сортирует ключи словарей перед выводом. Если вы хотите сохранить исходный порядок ключей, вы можете установить параметр sort_dicts=False
:
Красивый вывод чисел
Параметр underscore_numbers
позволяет добавлять подчеркивание для разделения цифр в больших числах для лучшей читаемости:
Как видно, большие числа разделены подчеркиванием для повышения читаемости.
Создание собственного объекта PrettyPrinter
Вы также можете создать свой экземпляр объекта PrettyPrinter
с настройками по умолчанию или своими собственными:
Таким образом, вы можете более детально настроить вывод структуры данных в соответствии с вашими потребностями.
Получение красивой строки с помощью pformat()
Метод pformat()
модуля pprint
позволяет получить красиво отформатированную строку вместо вывода на экран. Вот пример использования:
Теперь вы можете сохранить красивую отформатированную строку в переменной pretty_string
и использовать ее по своему усмотрению.
Обработка рекурсивных структур данных
pprint
способен обрабатывать рекурсивные структуры данных, такие как вложенные списки или словари. Он распознает эти структуры и избегает зацикливания. Вот пример использования:
Вывод:
Обратите внимание, что pprint
распознает рекурсивную ссылку и заменяет ее на <Recursion on list with id=...>
, чтобы избежать бесконечного вывода.
Заключение
Модуль pprint
в Python предоставляет удобный способ вывода структур данных в красивом формате. Он полезен при исследовании данных, отладке и работе с API запросами, JSON файлами и другими сложными структурами данных. Знание и использование pprint
позволяет делать вывод более читаемым и удобным для анализа.