Python: Dump Json ajoute les guillemets doubles et d'échapper à des citations
Je suis de la récupération de Twitter-les données avec un python de l'outil et de les exporter dans le format JSon pour mon disque. J'ai remarqué involontaire à s'échapper de l'ensemble de données de la chaîne pour un tweet d'être entouré de guillemets doubles. En outre, tous les guillemets de la réelle mise en forme Json sont échappés avec une barre oblique inverse.
Ils ressemblent à ceci:
"{\"created_at\":\"Ven Aoû 08 11:04:40 +0000
2014\",\"id\":497699913925292032,
Comment puis-je l'éviter? Il doit être:
{"created_at":"Fri Aug 08 11:04:40 +0000 2014" .....
Mon fichier de code ressemble à ceci:
with io.open('data'+self.timestamp+'.txt', 'a', encoding='utf-8') as f:
f.write(unicode(json.dumps(data, ensure_ascii=False)))
f.write(unicode('\n'))
Involontaire échapper à cause des problèmes wenn lecture dans le fichier json dans une prochaine étape de traitement.
- Vous n'avez pas besoin d'utiliser
unicode()
appelsjson.dumps(.., ensure_ascii=False)
déjà produitunicode()
cordes. - Vous êtes le plus susceptible double encodage; votre
data
objet est déjà JSON données codées.
Vous devez vous connecter pour publier un commentaire.
Vous double encodage de vos chaînes JSON.
data
est déjà une chaîne JSON, et n'a pas besoin d'être codé nouveau:Il suffit d'écrire directement à votre fichier:
Une autre situation où cela indésirables échappement peut se produire si vous essayez d'utiliser json.dump() sur les pré-traitées en sortie de json.décharges(). Par exemple
entraînera
Pour éviter cela, vous devez passer les dictionnaires plutôt que de la sortie de json.décharges(), par exemple
dont les résultats souhaités
(Pourquoi voulez-vous de pré-traiter l'intérieur de la liste avec json.décharges(), vous demandez-vous? Eh bien, j'ai eu une autre fonction qui est de la création de la liste interne de d'autres choses, et j'ai pensé qu'il serait judicieux d'y retourner un objet json à partir de cette fonction... Mal.)