python json twitter pretty-print

Necesita imprimir bastante datos JSON de Twitter en un archivo usando Python



pretty-print (5)

Un proyecto para clase implica analizar datos de Twitter JSON. Estoy obteniendo los datos y configurándolos en el archivo sin muchos problemas, pero todo está en una línea. Esto está bien para la manipulación de datos que estoy tratando de hacer, pero el archivo es ridículamente difícil de leer y no puedo examinarlo muy bien, haciendo que el código de escritura para la parte de manipulación de datos sea muy difícil.

¿Alguien sabe cómo hacer eso desde dentro de Python (es decir, sin utilizar la herramienta de línea de comandos, que no puedo poner en práctica)? Aquí está mi código hasta ahora:

header, output = client.request(twitterRequest, method="GET", body=None, headers=None, force_auth_header=True) # now write output to a file twitterDataFile = open("twitterData.json", "wb") # magic happens here to make it pretty-printed twitterDataFile.write(output) twitterDataFile.close()

Nota : Agradezco a las personas que me señalan la documentación simple de JSJ y demás, pero como ya lo he indicado, ya lo he analizado y sigo necesitando ayuda. Una respuesta verdaderamente útil será más detallada y explicativa que los ejemplos que se encuentran allí. Gracias

Además: intentándolo en la línea de comandos de Windows:

more twitterData.json | python -mjson.tool > twitterData-pretty.json

resultados en esto:

Invalid control character at: line 1 column 65535 (char 65535)

Te daría los datos que estoy usando, pero es muy grande y ya has visto el código que utilicé para crear el archivo.


Puede analizar el JSON y, a continuación, emitirlo de nuevo con sangrías como esta:

import json mydata = json.loads(output) print json.dumps(mydata, indent=4)

Consulte http://docs.python.org/library/json.html para obtener más información.


Puede usar el módulo http://docs.python.org/library/json.html de python para imprimir bonito.

>>> import json >>> print json.dumps({''4'': 5, ''6'': 7}, sort_keys=True, indent=4) { "4": 5, "6": 7 }

Entonces, en tu caso

>>> print json.dumps(json_output, indent=4)


Sé que esta es una vieja pregunta, me encontré con esta pregunta y encontré una respuesta simple. Simplemente redirecciona filename.json a python y ábrelo usando la herramienta y para leerlo usa más.

El código de muestra será,

cat filename.json | python -m json.tool | Más


header, output = client.request(twitterRequest, method="GET", body=None, headers=None, force_auth_header=True) # now write output to a file twitterDataFile = open("twitterData.json", "w") # magic happens here to make it pretty-printed twitterDataFile.write(simplejson.dumps(simplejson.loads(output), indent=4, sort_keys=True)) twitterDataFile.close()


import json with open("twitterdata.json", "w") as twitter_data_file: json.dump(output, twitter_data_file, indent=4, sort_keys=True)

No necesita json.dumps() si no desea analizar la cadena más tarde, simplemente use json.dump() . También es más rápido.