У меня есть JSON-файл, который я хочу распечатать - это беспорядок, какой самый простой способ сделать это в python? Я знаю, что PrettyPrint принимает «объект», который, я думаю, может быть файлом, но я не знаю, как передать файл - просто использование имени файла не работает.
python
json
formatting
pretty-print
Коллин
источник
источник
json.loads()
и распечатать полученный словарь. Или просто перейдите к разделу печати Pretty для документации поjson
Python .<your_file.js python -mjson.tool
как в ссылке @ ed?Ответы:
В
json
модуле уже реализована базовая симпатичная печать сindent
параметром:Чтобы проанализировать файл, используйте
json.load()
:источник
print json.dumps(your_json_string, indent=4)
print(json.dumps(json.loads(your_json_string), indent=2))
иначе он просто показал мне сбежавшую строкуВы можете сделать это в командной строке:
(как уже упоминалось в комментариях к вопросу, спасибо @Kai Petzke за предложение python3).
На самом деле python - не мой любимый инструмент в отношении обработки json в командной строке. Для простой красивой печати это нормально, но если вы хотите манипулировать json, это может стать слишком сложным. Вскоре вам понадобится написать отдельный скрипт-файл, вы можете получить карты, ключи которых у вас "some-key" (python unicode), что делает выбор полей более сложным и на самом деле не идет в направлении довольно Печатание.
Вы также можете использовать JQ :
и вы получаете цвета в качестве бонуса (и это значительно расширяет возможности).
Приложение: В комментариях есть некоторая путаница относительно использования jq для обработки больших файлов JSON, с одной стороны, и наличия очень большой jq-программы, с другой. Для красивой печати файла, состоящего из одного большого объекта JSON, практическим ограничением является ОЗУ. Для красивой печати файла объемом 2 ГБ, состоящего из одного массива реальных данных, «максимальный размер резидентного набора», необходимый для красивой печати, составлял 5 ГБ (с использованием jq 1.5 или 1.6). Также обратите внимание, что jq можно использовать из Python после
pip install jq
.источник
jq '' < some.json
python3 -m json.tool <IN >OUT
, так как это сохраняет первоначальный порядок полей в JSON-диктатах. Интерпретатор Python версии 2 сортирует поля в алфавитном порядке возрастания, что часто не то, что вы хотите.Вы можете использовать встроенный модуль pprint (https://docs.python.org/3.6/library/pprint.html) .
Как вы можете прочитать файл с данными JSON и распечатать его.
источник
Pygmentize + Python json.tool = Красивая печать с подсветкой синтаксиса
Пигментирование является убийственным инструментом. Посмотри это.
Я объединяю python json.tool с пигментированием
Смотрите ссылку выше для пигментирования инструкции по установке.
Демонстрация этого на изображении ниже:
источник
-g
самом деле не работает;) Поскольку входные данные поступают из стандартного ввода, pygmentize не может сделать правильное предположение. Вам нужно явно указать лексер:echo '{"foo": "bar"}' | python -m json.tool | pygmentize -l json
Используйте эту функцию и не беспокойтесь о необходимости помнить, является ли ваш JSON
str
илиdict
снова - просто посмотрите на симпатичную печать:источник
Однажды я написал
prettyjson()
функцию для создания привлекательного вывода. Вы можете получить реализацию из этого репо .Главной особенностью этой функции является то, что она пытается сохранять дикт и перечислять элементы в одну строку, пока не
maxlinelength
будет достигнут определенный уровень . Это дает меньше строк JSON, вывод выглядит более компактным и более легким для чтения.Вы можете создать такой вывод, например:
UPD Dec'19: я поместил код в отдельный репозиторий , исправил несколько ошибок и внес несколько других изменений.
источник
Чтобы иметь возможность красиво печатать из командной строки и иметь возможность контролировать отступы и т. Д., Вы можете установить псевдоним, подобный следующему:
А затем используйте псевдоним одним из следующих способов:
источник
Используйте pprint: https://docs.python.org/3.6/library/pprint.html.
print()
по сравнению сpprint.pprint()
источник
pprint
не создает действительный документ JSON.Вот простой пример красивой печати JSON на консоли хорошим способом в Python, не требуя, чтобы JSON был на вашем компьютере в виде локального файла:
источник
Это работает, чтобы отобразить или сохранить его в файл.
источник
Я думаю, что лучше разбирать JSON раньше, чтобы избежать ошибок:
источник
Вы можете попробовать pprintjson .
Установка
Применение
Довольно распечатать JSON из файла, используя pprintjson CLI.
Довольно распечатать JSON из стандартного ввода, используя интерфейс командной строки pprintjson.
Довольно распечатать JSON из строки, используя pprintjson CLI.
Довольно распечатать JSON из строки с отступом 1.
Довольно распечатать JSON из строки и сохранить вывод в файл output.json.
Вывод
источник
Это далеко от совершенства, но это делает работу.
Вы можете улучшить его, добавить отступы и т. д., но если вы просто хотите читать чище json, это путь.
источник