Proyek untuk kelas melibatkan penguraian data JSON Twitter. Saya mendapatkan data dan menyetelnya ke file tanpa banyak masalah, tetapi semuanya dalam satu baris. Ini bagus untuk manipulasi data yang saya coba lakukan, tetapi file tersebut sangat sulit dibaca dan saya tidak dapat memeriksanya dengan baik, membuat penulisan kode untuk bagian manipulasi data menjadi sangat sulit.
Adakah yang tahu bagaimana melakukan itu dari dalam Python (yaitu tidak menggunakan alat baris perintah, yang saya tidak bisa mulai bekerja)? Inilah kode saya sejauh ini:
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()
Catatan Saya menghargai orang yang mengarahkan saya ke dokumentasi simplejson dan semacamnya, tetapi seperti yang telah saya nyatakan, saya telah melihatnya dan terus membutuhkan bantuan. Balasan yang benar-benar membantu akan lebih detail dan jelas daripada contoh yang ditemukan di sana. Terima kasih
Juga: Mencoba ini di baris perintah windows:
more twitterData.json | python -mjson.tool > twitterData-pretty.json
menghasilkan ini:
Invalid control character at: line 1 column 65535 (char 65535)
Saya akan memberi Anda data yang saya gunakan, tetapi itu sangat besar dan Anda sudah melihat kode yang saya gunakan untuk membuat file tersebut.
sumber
\r\n
vs\n
) penting. Lihat stackoverflow.com/questions/3257869/… . Dalam kasus Anda, Anda ingin akhiran baris ramah windows, tetapi Anda mungkin tidak mendapatkannya dari titik akhir twitter, jadi Anda harus membuka dalam mode teks.Jawaban:
Anda harus menggunakan argumen opsional
indent
.sumber
with open("name_of_file.json", "w") as f: f.write(my_formatted_json_var)
Keuntungannya adalah Anda yakin file akan ditutup, katakan pada cuplikan yang lebih besar ...with
sintaks jelas lebih baik, tetapi saya mencoba untuk mengukur jawaban saya kepada audiens sayaAnda dapat mengurai JSON, lalu mengeluarkannya lagi dengan indentasi seperti ini:
Lihat http://docs.python.org/library/json.html untuk info lebih lanjut.
sumber
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
mengembalikan string.json.dump
menulis ke file.Anda tidak perlu
json.dumps()
jika tidak ingin mengurai string nanti, cukup gunakanjson.dump()
. Lebih cepat juga.sumber
Anda dapat menggunakan modul json python untuk mencetak cantik.
Jadi, dalam kasus Anda
sumber
doesn't work as well
.?Jika Anda sudah memiliki file JSON yang ingin Anda format cantik, Anda dapat menggunakan ini:
sumber
Jika Anda membuat * .json baru atau memodifikasi file josn yang ada, gunakan parameter "indent" untuk format json tampilan cantik.
sumber
sumber
Anda dapat mengarahkan file ke python dan membuka menggunakan alat tersebut dan untuk membacanya gunakan lebih banyak.
Kode sampelnya adalah,
sumber