Voici mon code, des trucs vraiment simples ...
import csv
import json
csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')
fieldnames = ("FirstName","LastName","IDNumber","Message")
reader = csv.DictReader( csvfile, fieldnames)
out = json.dumps( [ row for row in reader ] )
jsonfile.write(out)
Déclarez certains noms de champs, le lecteur utilise CSV pour lire le fichier et les noms de fichiers pour vider le fichier au format JSON. Voici le problème ...
Chaque enregistrement du fichier CSV se trouve sur une ligne différente. Je veux que la sortie JSON soit de la même manière. Le problème est qu'il dépose tout sur une longue et géante ligne.
J'ai essayé d'utiliser quelque chose comme for line in csvfile:
, puis d'exécuter mon code en dessous de celui avec reader = csv.DictReader( line, fieldnames)
lequel boucle à travers chaque ligne, mais il fait le fichier entier sur une ligne, puis boucle à travers le fichier entier sur une autre ligne ... continue jusqu'à ce qu'il manque de lignes .
Des suggestions pour corriger cela?
Edit: Pour clarifier, actuellement j'ai: (chaque enregistrement sur la ligne 1)
[{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"},{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}]
Ce que je recherche: (2 enregistrements sur 2 lignes)
{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"}
{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}
Pas chaque champ individuel en retrait / sur une ligne distincte, mais chaque enregistrement sur sa propre ligne.
Quelques exemples d'entrée.
"John","Doe","001","Message1"
"George","Washington","002","Message2"
[{..row..},{..row..},...]
pas produire{..row..}{..row..}..
. C'est-à-dire que la sortie semble être un tableau json d'objets json, pas un flux d'objets json non connectés.