Un proyecto para clase implica analizar datos JSON de Twitter. Obtengo los datos y los configuro en el archivo sin muchos problemas, pero todo está en una sola 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, lo que dificulta mucho la escritura del código para la parte de manipulación de datos.
¿Alguien sabe cómo hacer eso desde Python (es decir, sin usar la herramienta de línea de comandos, que no puedo hacer que funcione)? 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()
Tenga en cuenta que agradezco que la gente me indique la documentación de simplejson y demás, pero como he dicho, ya lo he examinado y sigo necesitando ayuda. Una respuesta verdaderamente útil será más detallada y explicativa que los ejemplos que se encuentran allí. Gracias
Además: intentando esto en la línea de comandos de Windows:
more twitterData.json | python -mjson.tool > twitterData-pretty.json
resulta en esto:
Invalid control character at: line 1 column 65535 (char 65535)
Le daría los datos que estoy usando, pero es muy grande y ya ha visto el código que usé para hacer el archivo.
fuente
\r\n
vs\n
) es importante. Consulte stackoverflow.com/questions/3257869/… . En su caso, desea finales de línea compatibles con Windows, pero es posible que no obtenga eso desde el punto final de Twitter, por lo que debe abrir en modo texto.Respuestas:
Debes usar el argumento opcional
indent
.fuente
with open("name_of_file.json", "w") as f: f.write(my_formatted_json_var)
ventaja es que está seguro de que el archivo se cerrará, por ejemplo, en fragmentos más grandes ...with
sintaxis es sin duda mejor, pero trato de escalar mis respuestas a mi públicoPuede analizar el JSON y luego generarlo nuevamente con sangrías como esta:
Consulte http://docs.python.org/library/json.html para obtener más información.
fuente
header, output = client.request(twitterRequest, method="GET", body=None, headers=None, force_auth_header=True) twitterDataFile = open("twitterData.json", "wb") json.dumps(json.loads(output), twitterDataFile, indent=4) twitterDataFile.close()
json.dumps
devuelve una cadena.json.dump
escribe en un archivo.No es necesario
json.dumps()
si no desea analizar la cadena más tarde, simplemente usejson.dump()
. También es más rápido.fuente
Puede usar el módulo json de python para imprimir bastante.
Entonces, en tu caso
fuente
doesn't work as well
.?Si ya tiene archivos JSON existentes que desea un formato bonito, puede usar esto:
fuente
Si está generando un nuevo * .json o modificando un archivo josn existente, use el parámetro "sangría" para el formato json de vista bonita.
fuente
fuente
Puede redirigir un archivo a Python y abrirlo con la herramienta y, para leerlo, use más.
El código de muestra será,
fuente