Необходимость Pretty-Print Twitter JSON Data в файл с помощью Python
Проект для класса включает в себя анализ данных JSON на Twitter. Я получаю данные и устанавливаю их в файл без особых проблем, но все это в одной строке. Это хорошо для манипуляций с данными, которые я пытаюсь сделать, но файл смехотворно трудно читать, и я не могу его изучить очень хорошо, что очень затрудняет запись кода для части обработки данных.
Кто-нибудь знает, как это сделать из Python (т.е. не использовать инструмент командной строки, с которым я не могу работать)? Вот мой код:
header, output = client.request(twitterRequest, method="GET", body=None,
headers=None, force_auth_header=True)
# now write output to a file
twitterDataFile = open("twitterData.json", "wb")
# magic happens here to make it pretty-printed
twitterDataFile.write(output)
twitterDataFile.close()
Примечание. Я ценю, что люди указывают мне на документацию simplejson и т.д., но, как я уже сказал, я уже посмотрел на это и по-прежнему нуждаюсь в помощи. Поистине полезный ответ будет более подробным и объяснительным, чем примеры, найденные там. Благодаря
И
Попробуйте это в командной строке Windows:
more twitterData.json | python -mjson.tool > twitterData-pretty.json
приводит к следующему:
Invalid control character at: line 1 column 65535 (char 65535)
Я бы предоставил вам данные, которые я использую, но он очень большой, и вы уже видели код, который я использовал для создания файла.
Ответы
Ответ 1
header, output = client.request(twitterRequest, method="GET", body=None,
headers=None, force_auth_header=True)
# now write output to a file
twitterDataFile = open("twitterData.json", "w")
# magic happens here to make it pretty-printed
twitterDataFile.write(simplejson.dumps(simplejson.loads(output), indent=4, sort_keys=True))
twitterDataFile.close()
Ответ 2
Вы можете разобрать JSON, а затем вывести его снова с помощью таких отступов:
import json
mydata = json.loads(output)
print json.dumps(mydata, indent=4)
Подробнее см. http://docs.python.org/library/json.html.
Ответ 3
Вы можете использовать json модуль python для красивой печати.
>>> import json
>>> print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
{
"4": 5,
"6": 7
}
Итак, в вашем случае
>>> print json.dumps(json_output, indent=4)
Ответ 4
Я знаю, что это старый вопрос, столкнулся с этим вопросом и нашел простой ответ. Просто перенаправьте filename.json на python и откройте с помощью инструмента, и чтобы прочитать его, используйте больше.
Пример кода будет,
cat filename.json | python -m json.tool | более