Как использовать/исправить python pretty printer?
Красивый вывод ваших структур данных с помощью Pretty Print в Python
pprint_Watermarked.a3e409650f59.jpeg)
Автор: Ian Currie
Когда дело доходит до работы с данными в Python, создание читаемого вывода структур данных иногда может быть сложной задачей. Компьютеры не обращают внимания на форматирование, но людям трудно читать данные без хорошего форматирования. Использование функции print()
для вывода больших словарей или длинных списков может быть эффективным, но не всегда красивым.
Модуль pprint
в Python - это утилита, которую вы можете использовать для вывода структур данных в читаемом и красивом формате. Он является частью стандартной библиотеки и особенно полезен для отладки кода, работающего с запросами API, большими JSON-файлами и данными в целом.
По окончании этого руководства вы:
- Поймете, почему модуль
pprint
в Python - необходим - Узнаете, как использовать функции
pprint()
,PrettyPrinter
и их параметры - Сможете создавать свой экземпляр класса
PrettyPrinter
- Сможете сохранять отформатированный вывод в виде строк, а не просто выводить его на экран
- Узнаете, как работать с рекурсивными структурами данных
Бесплатный бонус: Нажмите здесь, чтобы получить Памятку по Python и изучить основы Python 3, такие как работа с типами данных, словарями, списками и функциями Python.
Понимание необходимости красивого вывода в Python
Прежде чем использовать pprint
, мы сначала будем использовать urllib
для выполнения запроса и получения данных. Мы сделаем запрос к API {JSON} Placeholder для получения фиктивной информации о пользователях. Первое, что нужно сделать - это выполнить HTTP-запрос типа GET
и поместить ответ в словарь:
Здесь мы делаем базовый запрос GET
и затем преобразуем ответ в словарь с помощью json.loads()
. Теперь, когда у нас есть словарь в переменной, обычно следующим шагом является вывод содержимого с помощью print()
:
К сожалению, вывод выглядит не очень красиво. Давайте воспользуемся модулем pprint
, чтобы вывести структуру данных более читаемым образом.
Работа с модулем pprint
Модуль pprint
предоставляет нам несколько методов для красивого вывода структур данных. Один из самых простых и наиболее популярных методов - pprint()
. Этот метод автоматически форматирует структуру данных, добавляя отступы, разрывы строк и выравнивание.
Добавим импорт модуля pprint
в наш код и воспользуемся его функцией pprint()
для красивого вывода данных:
Теперь вывод данных выглядит намного более красиво и удобочитаемо:
Такой вывод структуры данных делает ее гораздо читаемее и более удобной для анализа.
Изучение необязательных параметров pprint()
Метод pprint()
имеет несколько необязательных параметров, которые позволят вам настроить вывод структуры данных под свои нужды. Давайте рассмотрим некоторые из них.
Суммаризация данных: depth
Параметр depth
позволяет ограничить глубину вывода структуры данных. Если ваша структура данных имеет множество вложенных уровней, вы можете использовать этот параметр, чтобы предотвратить слишком длинные выводы.
Для использования параметра depth
, передайте целое число в качестве аргумента:
Теперь вывод будет содержать только первые два уровня вложенности структуры данных:
Отступы в данных: indent
Параметр indent
позволяет настроить количество пробелов, используемых для отступов в каждом уровне вложенности структуры данных. По умолчанию значение indent
равно 4.
Давайте увеличим значение indent
до 2 и посмотрим, как изменится вывод:
Теперь вывод будет выглядеть следующим образом:
Увеличение количества пробелов в отступах делает вывод еще более читаемым.
Ограничение длины строки: width
Параметр width
позволяет ограничить длину выводимой строки. Если ваша структура данных содержит очень длинные строки, вы можете использовать этот параметр, чтобы предотвратить горизонтальную прокрутку.
Теперь строка не будет превышать 80 символов:
Сжатие длинных последовательностей: compact
Параметр compact
позволяет сжимать длинные последовательности (списки или словари) на одной строке, вместо переноса их по нескольким строкам.
Теперь длинная последовательность будет выглядеть следующим образом:
Направление вывода: stream
Параметр stream
позволяет указать поток вывода для данных. По умолчанию, вывод осуществляется в стандартный поток вывода (консоль). Однако, вы можете указать любой объект, поддерживающий метод write()
, например, файловый объект.
Создадим файл output.txt
и укажем его в качестве значения параметра stream
:
Теперь данные будут записаны в файл output.txt
, а не выводиться на экран.
Предотвращение сортировки словарей: sort_dicts
Структуры данных типа словарь не имеют порядка элементов по умолчанию. Однако, параметр sort_dicts
позволяет упорядочить элементы словаря по алфавиту.
Теперь элементы словаря будут отсортированы по алфавиту ключей:
Улучшение вывода чисел: underscore_numbers
Параметр underscore_numbers
позволяет добавить подчеркивания между разрядами чисел для улучшения их читабельности.
Теперь числа будут выглядеть следующим образом:
Создание собственного объекта PrettyPrinter
Модуль pprint
также позволяет создать собственный объект PrettyPrinter
, который может быть настроен по вашим потребностям.
Теперь мы можем использовать этот объект для красивого вывода данных по нашим параметрам:
Получение красивой строки с помощью функции pformat()
Модуль pprint
также предоставляет функцию pformat()
, которая возвращает отформатированную строку вместо вывода на экран. Вот пример использования:
Функция pformat()
возвращает отформатированную строку, которую мы можем сохранить в переменную и использовать по своему усмотрению.
Обработка рекурсивных структур данных
Модуль pprint
также способен обрабатывать рекурсивные структуры данных. Рекурсия возникает, когда объект ссылается на самого себя. Давайте создадим простой класс Node
, который будет иметь ссылку на другой объект Node
:
Модуль pprint
понимает рекурсивные ссылки и обрабатывает их без ошибок. Вот что будет выведено:
Обратите внимание, что ссылка next
на объект Node
повторяет саму себя.
Заключение
Модуль pprint
в Python предоставляет удобные инструменты для красивого вывода структур данных. Вы можете использовать его для отладки кода, работы с JSON-файлами, а также для обработки сложных и вложенных данных. Использование pprint
делает ваш код более читаемым и удобным для анализа.
Теперь, с использованием pprint
, вы сможете эффективно и красиво выводить ваши структуры данных в Python.