Ich spiele sowohl mit dem Erlernen von Python als auch mit dem Versuch, Github-Probleme in eine lesbare Form zu bringen. Verwenden der Hinweise zu Wie kann ich JSON in CSV konvertieren? Ich habe mir das 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"]])
Wobei "Issues.json" die JSON-Datei ist, die meine Github-Probleme enthält. Wenn ich versuche, das auszuführen, bekomme 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 fehlt mir hier? Welches sind die "String-Indizes"? Ich bin mir sicher, dass ich, sobald ich das zum Laufen bringe, mehr Probleme haben werde, aber im Moment würde ich es einfach lieben, wenn das funktioniert!
Wenn ich die for
Aussage einfach ändere
for item in data:
print item
Was ich bekomme ist ... "Probleme" - also mache ich etwas grundlegenderes falsch. Hier ist ein bisschen von meinem json:
{"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 data
drucke, sieht es so aus, als würde es wirklich seltsam gemungert:
{u'issues': [{u'body': u'Add missing paging (Older>>) lin...
print repr(data)
oderimport pprint; pprint.pprint(data)