2017-10-09 8 views
-1

J'ai un fichier csv avec ces données et en utilisant python je voudrais convertir en format json.CSV à JSON avec un format spécifique

Je voudrais convertir dans ce format Format Json.Pouvez-vous me dire quelle bibliothèque je devrais utiliser ou toute suggestion pour le code sudo. Je suis capable de convertir en json standard qui a paire de valeur de clé, mais je ne sais pas comment convertir en dessous du format Json.

"T-shirt","Long-tshirt",18 
"T-shirt","short-tshirt"19 
"T-shirt","half-tshirt",20 
"top","very-nice",45 
"top","not-nice",56 

{ 
 
"T-shirts":[ 
 
    { 
 
    "name":"Long-tshirt", 
 
    "size":"18" 
 
    }, 
 
    { 
 
    "name":"short-tshirt", 
 
    "size":"19" 
 
    }, 
 
    { 
 
    "name":"half-tshirt", 
 
    "size":"20" 
 
    }, 
 
    ], 
 
"top":[ 
 
    { 
 
    "name":"very-nice" 
 
    "size":45 
 
    }, 
 
    { 
 
    "name":"not-nice" 
 
    "size":45 
 
    }, 
 
    ] 
 
}

Répondre

1

Dans ce code, j'ai mis votre fichier CSV dans le fichier test.csv: (en tête, le code fourni manquait une virgule avant le 19).

"T-shirt","Long-tshirt",18 
"T-shirt","short-tshirt",19 
"T-shirt","half-tshirt",20 
"top","very-nice",45 
"top","not-nice",56 

Puis, en utilisant le haut-modules csv et json vous pouvez itérer sur chaque ligne et les ajouter à un dictionnaire. J'ai utilisé un defaultdict pour gagner du temps et écrire ces données dans un fichier json.

import csv, json 
from collections import defaultdict 

my_data = defaultdict(list) 

with open("test.csv") as csv_file: 
    reader = csv.reader(csv_file) 
    for row in reader: 
     if row: # To ignore blank lines 
      my_data[row[0]].append({"name": row[1], "size": row[2]}) 


with open("out.json", "w") as out_file: 
    json.dump(my_data, out_file, indent=2) 

fichier généré sur:

{ 
    "T-shirt": [ 
    { 
     "name": "Long-tshirt", 
     "size": "18" 
    }, 
    { 
     "name": "short-tshirt", 
     "size": "19" 
    }, 
    { 
     "name": "half-tshirt", 
     "size": "20" 
    } 
    ], 
    "top": [ 
    { 
     "name": "very-nice", 
     "size": "45" 
    }, 
    { 
     "name": "not-nice", 
     "size": "56" 
    } 
    ] 
} 
+0

Comment puis-je ajouter la clé sur le dessus de la dict si c'est comme Type et sa valeur a cette sortie. Avez-vous une idée à ce sujet. – Nishit

+0

Salut @Nishit désolé pour la réponse tardive, je pense que vous dites que vous voulez juste une autre paire de clés de niveau supérieur au dictionnaire, donc la dernière ligne: 'json.dump ({" Type ": my_data}, out_file, indent = 2)' . Fondamentalement juste envelopper ce que nous avons transformé dans un autre dictionnaire pour donner cette couche. '{" Type ": mes_données}' – CasualDemon

-3
import json 

json_string = json.dumps(your_dict) 

Vous avez maintenant de votre dictionnaire d'origine une chaîne contenant la date au format JSON - est que ce que vous vouliez?

+0

je n'ai pas le format JSON, mais je voudrais convertir mon csv en way.This ci-dessus au format que vous demandez? – Nishit