Sto giocando con l'apprendimento di Python e cercando di ottenere i problemi di github in una forma leggibile. Utilizzando i consigli su Come posso convertire JSON in CSV? Ho pensato a questo:
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"]])
Dove "issues.json" è il file json contenente i miei problemi con github. Quando provo a farlo, ottengo
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
Cosa mi sto perdendo qui? Quali sono gli "indici di stringa"? Sono sicuro che una volta che avrò funzionato avrò più problemi, ma per ora, mi piacerebbe solo che funzionasse!
Quando modifico for
semplicemente l' affermazione
for item in data:
print item
quello che ottengo è ... "problemi" - quindi sto facendo qualcosa di più sbagliato di base. Ecco un po 'del mio 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...
quando data
stampo sembra che si stia davvero stranendo:
{u'issues': [{u'body': u'Add missing paging (Older>>) lin...
print repr(data)
oimport pprint; pprint.pprint(data)