Проект для класса включает анализ данных Twitter JSON. Я получаю данные и устанавливаю их в файл без особых проблем, но все в одной строке. Это нормально для манипуляций с данными, которые я пытаюсь сделать, но файл до смешного трудно читать, и я не могу хорошо его изучить, что очень усложняет написание кода для части манипулирования данными.
Кто-нибудь знает, как это сделать из 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)
Я бы дал вам данные, которые я использую, но они очень большие, и вы уже видели код, который я использовал для создания файла.
источник
\r\n
vs\n
). См. Stackoverflow.com/questions/3257869/… . В вашем случае вам нужны окончания строк, дружественные к Windows, но вы можете не получить этого из конечной точки Twitter, поэтому вам следует открывать в текстовом режиме.Ответы:
Вы должны использовать необязательный аргумент
indent
.источник
with open("name_of_file.json", "w") as f: f.write(my_formatted_json_var)
преимущество в том, что вы уверены, что файл закроется, скажем, на больших фрагментах ...with
синтаксис определенно лучше, но я стараюсь масштабировать свои ответы для моей аудиторииВы можете проанализировать JSON, а затем снова вывести его с такими отступами:
См. Http://docs.python.org/library/json.html для получения дополнительной информации.
источник
header, output = client.request(twitterRequest, method="GET", body=None, headers=None, force_auth_header=True) twitterDataFile = open("twitterData.json", "wb") json.dumps(json.loads(output), twitterDataFile, indent=4) twitterDataFile.close()
json.dumps
возвращает строку.json.dump
пишет в файл.Вам не нужно,
json.dumps()
если вы не хотите анализировать строку позже, просто используйтеjson.dump()
. Это тоже быстрее.источник
Вы можете использовать json- модуль Python для красивой печати.
Итак, в вашем случае
источник
doesn't work as well
?Если у вас уже есть файлы JSON, которые вы хотите отформатировать, вы можете использовать это:
источник
Если вы создаете новый * .json или изменяете существующий файл josn, используйте параметр «indent» для красивого просмотра формата json.
источник
источник
Вы можете перенаправить файл на python и открыть его с помощью инструмента, а для чтения использовать больше.
Пример кода будет,
источник