Projekt dla zajęć obejmuje analizę danych JSON Twittera. Pobieram dane i ustawiam je do pliku bez większego problemu, ale wszystko jest w jednej linii. Jest to dobre w przypadku manipulacji danymi, które próbuję zrobić, ale plik jest absurdalnie trudny do odczytania i nie mogę go bardzo dobrze zbadać, co sprawia, że pisanie kodu dla części dotyczącej manipulacji danymi jest bardzo trudne.
Czy ktoś wie, jak to zrobić z poziomu Pythona (tj. Nie używając narzędzia wiersza poleceń, którego nie mogę uruchomić)? Oto mój dotychczasowy kod:
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()
Uwaga Doceniam osoby wskazujące mi na prostą dokumentację i tym podobne, ale jak już powiedziałem, już się temu przyjrzałem i nadal potrzebuję pomocy. Naprawdę pomocna odpowiedź będzie bardziej szczegółowa i wyjaśniająca niż przykłady tam znalezione. Dzięki
Ponadto: próbując tego w wierszu poleceń systemu Windows:
more twitterData.json | python -mjson.tool > twitterData-pretty.json
powoduje to:
Invalid control character at: line 1 column 65535 (char 65535)
Podałbym dane, których używam, ale są bardzo duże i już widziałeś kod, którego użyłem do utworzenia pliku.
źródło
\r\n
Vs\n
). Zobacz stackoverflow.com/questions/3257869/… . W twoim przypadku chcesz, aby zakończenia linii były przyjazne dla systemu Windows, ale możesz nie uzyskać tego z punktu końcowego Twittera, więc powinieneś otworzyć w trybie tekstowym.Odpowiedzi:
Powinieneś użyć opcjonalnego argumentu
indent
.źródło
with open("name_of_file.json", "w") as f: f.write(my_formatted_json_var)
zaletą jest to, że jesteś pewien, że plik się zamknie, powiedzmy na większych fragmentach ...with
składnia jest zdecydowanie ładniejsza, ale staram się przeskalować odpowiedzi do odbiorcówMożesz przeanalizować JSON, a następnie wyprowadzić go ponownie z wcięciami takimi jak:
Więcej informacji można znaleźć pod adresem http://docs.python.org/library/json.html .
źródło
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
zwraca ciąg.json.dump
zapisuje do pliku.Nie potrzebujesz,
json.dumps()
jeśli nie chcesz później analizować ciągu, po prostu użyjjson.dump()
. Jest też szybszy.źródło
Możesz użyć modułu json w pythonie, aby dobrze wydrukować.
A więc w twoim przypadku
źródło
doesn't work as well
.?Jeśli masz już istniejące pliki JSON, które chcesz ładnie sformatować, możesz użyć tego:
źródło
Jeśli generujesz nowy * .json lub modyfikujesz istniejący plik josn, użyj parametru "indent" dla ładnego formatu json widoku.
źródło
źródło
Możesz przekierować plik do Pythona i otworzyć go za pomocą narzędzia, a do odczytu użyj więcej.
Przykładowy kod będzie wyglądał następująco:
źródło