2017-10-09 147 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