Ich spiele mit beiden Lernen Python und versuche, GitHub Fragen in eine lesbare Form zu bekommen. Mit den Ratschlägen auf Wie kann ich JSON in CSV konvertieren? habe ich mir das hier ausgedacht:
import json
import csv
f = open('issues.json')
data = json.load(f)
f.close()
f = open("issues.csv", "wb+")
csv_file = csv.writer(f)
csv_file.writerow(["gravatar_id", "position", "number", "votes", "created_at", "comments", "body", "title", "updated_at", "html_url", "user", "labels", "state"])
for item in data:
csv_file.writerow([item["gravatar_id"], item["position"], item["number"], item["votes"], item["created_at"], item["comments"], item["body"], item["title"], item["updated_at"], item["html_url"], item["user"], item["labels"], item["state"]])
Dabei ist "issues.json" die JSON-Datei mit meinen GitHub-Problemen. Wenn ich versuche, das auszuführen, erhalte ich
File "foo.py", line 14, in <module>
csv_file.writerow([item["gravatar_id"], item["position"], item["number"], item["votes"], item["created_at"], item["comments"], item["body"], item["title"], item["updated_at"], item["html_url"], item["user"], item["labels"], item["state"]])
TypeError: string indices must be integers
Was übersehe ich hier? Welches sind die "String-Indizes"? Ich bin sicher, dass ich, sobald ich dies funktioniert, mehr Probleme haben werde, aber im Moment würde ich einfach gerne, dass dies funktioniert!
Wenn ich die for
Anweisung zu einfach
for item in data:
print item
was ich bekomme ist ... "Probleme" - also mache ich etwas Grundlegendes falsch. Hier ist ein bisschen von meinem JSON-Inhalt:
{"issues": [{"gravatar_id": "44230311a3dcd684b6c5f81bf2ec9f60", "position": 2.0, "number": 263, "votes": 0, "created_at": "2010/09/17 16:06:50 -0700", "comments": 11, "body": "Add missing paging (Older>>) links...
wenn ich drucke data
sieht es so aus, als ob es wirklich seltsam vermischt wird:
{u'issues': [{u'body': u'Add missing paging (Older>>) lin...