Saltar al contenido

python – ¿Por qué veo «TypeError: los índices de cadena deben ser enteros»?

septiembre 29, 2021
apple touch icon@2

Estoy jugando aprendiendo python y tratando de convertir los problemas de github en una forma legible. Siguiendo los consejos de ¿Cómo puedo convertir JSON a CSV? Se me ocurrió esto:

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"]])

Donde «issues.json» es el archivo json que contiene mis problemas de github. Cuando trato de ejecutar eso, obtengo

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

¿Que me estoy perdiendo aqui? ¿Cuáles son los «índices de cadenas»? Estoy seguro de que una vez que esto funcione, tendré más problemas, pero por ahora, ¡me encantaría que esto funcione!

Cuando modifico el for declaración para simplemente

for item in data:
    print item

lo que obtengo son … «problemas», así que estoy haciendo algo más básico mal. Aquí hay un poco de mi 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...

cuando imprimo data parece que se está machacando realmente de manera extraña:

{u'issues': [{u'body': u'Add missing paging (Older>>) lin...
close