2017-10-09 136 views
-1

我有这个数据和使用python csv文件,我想转换为json格式。CSV到特定格式的JSON

我想以这种格式转换Json格式。可以告诉我应该使用哪个库或任何关于sudo代码的建议。 我能够在具有关键值对的标准json中转换,但我不知道如何转换为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 
 
    }, 
 
    ] 
 
}

回答

1

在此代码中,我将您的CSV文件放入test.csv文件中:(作为抬头,所提供的代码在19之前缺少逗号)。

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

然后,使用内置csvjson模块,你可以遍历每一行,并将其添加到字典中。我使用了defaultdict来节省时间,并将该数据写入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) 

生成了所有的文件:

{ 
    "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

如何在字典的顶部添加密钥,使其看起来像Type,并且它的值有此输出。您对此有任何想法。 – Nishit

+0

嗨@Nishit对不起,我认为你只是想要另一个更高级别的密钥对字典,所以最后一行:'json.dump({“Type”:my_data},out_file,indent = 2)' 。基本上只是将我们转换成另一个字典的东西包装起来以提供该层。 '{“Type”:my_data}' – CasualDemon

-3
import json 

json_string = json.dumps(your_dict) 

您现在有一个包含字符串JSON格式的日期从原来的字典 - 是你想要的吗?

+0

我没有JSON格式,但我想我的CSV格式转换成你要求上述格式化way.this? – Nishit