Un projet de classe implique l'analyse des données JSON Twitter. J'obtiens les données et je les place dans le fichier sans trop de problèmes, mais tout est sur une seule ligne. C'est bien pour la manipulation de données que j'essaie de faire, mais le fichier est ridiculement difficile à lire et je ne peux pas l'examiner très bien, ce qui rend l'écriture de code pour la partie manipulation de données très difficile.
Est-ce que quelqu'un sait comment faire cela à partir de Python (c'est-à-dire sans utiliser l'outil de ligne de commande, que je ne peux pas faire travailler)? Voici mon code pour l'instant:
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()
Notez que j'apprécie les gens qui me pointent vers la documentation simplejson et autres, mais comme je l'ai dit, j'ai déjà regardé cela et j'ai encore besoin d'aide. Une réponse vraiment utile sera plus détaillée et explicative que les exemples qui s'y trouvent. Merci
Aussi: Essayer ceci dans la ligne de commande Windows:
more twitterData.json | python -mjson.tool > twitterData-pretty.json
se traduit par ceci:
Invalid control character at: line 1 column 65535 (char 65535)
Je vous donnerais les données que j'utilise, mais elles sont très volumineuses et vous avez déjà vu le code que j'ai utilisé pour créer le fichier.
la source
\r\n
vs\n
) est importante. Voir stackoverflow.com/questions/3257869/… . Dans votre cas, vous voulez des fins de ligne conviviales pour Windows, mais vous pourriez ne pas l'obtenir à partir du point de terminaison Twitter, vous devez donc ouvrir en mode texte.Réponses:
Vous devez utiliser l'argument facultatif
indent
.la source
with open("name_of_file.json", "w") as f: f.write(my_formatted_json_var)
avantage étant que vous êtes sûr que le fichier se fermera, par exemple sur de plus gros extraits ...with
la syntaxe est certainement plus agréable, mais j'essaie d'Vous pouvez analyser le JSON, puis le renvoyer avec des retraits comme ceci:
Voir http://docs.python.org/library/json.html pour plus d'informations.
la source
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
renvoie une chaîne.json.dump
écrit dans un fichier.Vous n'en avez pas besoin
json.dumps()
si vous ne souhaitez pas analyser la chaîne plus tard, utilisez simplementjson.dump()
. C'est aussi plus rapide.la source
Vous pouvez utiliser le module json de python pour une jolie impression.
Alors, dans ton cas
la source
doesn't work as well
.?Si vous avez déjà des fichiers JSON existants que vous souhaitez mettre en forme, vous pouvez utiliser ceci:
la source
Si vous générez un nouveau fichier * .json ou modifiez un fichier josn existant, utilisez le paramètre "indent" pour le format json de jolie vue.
la source
la source
Vous pouvez rediriger un fichier vers python et l'ouvrir à l'aide de l'outil et pour le lire, utilisez davantage.
L'exemple de code sera,
la source