it-swarm.com.de

JSON-Daten mit Python

Ein Projekt für eine Klasse beinhaltet das Parsen von Twitter-JSON-Daten. Ich bekomme die Daten und setze sie ohne großen Aufwand in die Datei, aber alles in einer Zeile. Dies ist in Ordnung für die Datenmanipulation, die ich versuche, aber die Datei ist lächerlich schwer zu lesen und ich kann sie nicht sehr gut untersuchen, was das Schreiben des Codes für den Datenmanipulationsteil sehr schwierig macht.

Weiß jemand, wie man das von innen macht Python (d. H. Ohne das Kommandozeilen-Tool, mit dem ich nicht anfangen kann)? Hier ist mein Code:

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()

Anmerkung Ich schätze Leute, die mich auf simplejson-Dokumentation und dergleichen hinweisen, aber wie gesagt, ich habe mir das bereits angesehen und brauche weiterhin Unterstützung. Eine wirklich hilfreiche Antwort wird ausführlicher und erklärender sein als die Beispiele, die dort zu finden sind. Danke

Also: Versuchen Sie dies in der Windows-Befehlszeile:

more twitterData.json | python -mjson.tool > twitterData-pretty.json

ergebnisse in diesem:

Invalid control character at: line 1 column 65535 (char 65535)

Ich würde Ihnen die Daten geben, die ich verwende, aber sie sind sehr groß und Sie haben bereits den Code gesehen, mit dem ich die Datei erstellt habe.

78
Zelbinian
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()
66
mattbornski

Sie können den JSON-Code analysieren und dann erneut mit folgenden Einzügen ausgeben:

import json
mydata = json.loads(output)
print json.dumps(mydata, indent=4)

Weitere Informationen finden Sie unter http://docs.python.org/library/json.html .

55
dkamins
import json

with open("twitterdata.json", "w") as Twitter_data_file:
    json.dump(output, Twitter_data_file, indent=4, sort_keys=True)

Sie brauchen json.dumps() nicht, wenn Sie die Zeichenfolge später nicht analysieren möchten, verwenden Sie einfach json.dump(). Es ist auch schneller.

41
Andras Dosztal

Sie können das json Modul von python zum hübschen Drucken verwenden.

>>> import json
>>> print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)
{
    "4": 5,
    "6": 7
}

Also, in deinem Fall

>>> print json.dumps(json_output, indent=4)
14
RanRag

Wenn Sie bereits JSON-Dateien haben, die Sie hübsch formatieren möchten, können Sie dies verwenden:

    with open('twitterdata.json', 'r+') as f:
        data = json.load(f)
        f.seek(0)
        json.dump(data, f, indent=4)
        f.truncate()
3
locke14