425 Stimmen

Warum sehe ich "TypeError: string indices must be integers"?

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...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X