如何通过Python从简单的CSV创建嵌套的JSON

问题描述:

我正在寻找一种通过Python从简单的CSV创建嵌套的JSON的方法。我到目前为止我能够从CSV中创建Json,看起来应该是这样。但是我想将CSV中的一些属性放在一个JSON数组中,因为它们属于一起。如何通过Python从简单的CSV创建嵌套的JSON

输入CSV:

Ansprechpartner, Telefon, Fax, eMail Elin Persson,+46 (0)243 224360,+46 (0) 243 81322,[email protected]

输出JSON:

[ 
    { 
    "Ansprechpartner": ["Elin Persson","+46 (0)243 224360","+46 (0) 243 81322","[email protected]"] 
    } 
] 

我已有的输出:

[ 
    { 
    "Fax": "+46 (0) 243 81322", 
    "eMail": "[email protected]", 
    "Telefon": "+46 (0)243 224360", 
    "Ansprechpartner": "Elin Persson" 
    } 
] 

Python代码:

import csv 
import json 


#open CSV/read/create list 
with open('Ansprechpartner.csv') as f: 
    reader = csv.DictReader(f)  
    rows = list(reader) 

#open JSON/input list 
with open('test.json','w') as f: 
    json.dump(rows,f,indent=2, ensure_ascii=False) 

可以请别人帮我在JSOn文件中创建这个数组? 谢谢

+0

可以有多个人吗?在这种情况下,CSV会是什么样子? – languitar

+0

没有,不可能有不止一个人。 –

DictReader映射信息字典,你应该使用csv.reader()方法。

返回将在给定的 csv文件中遍历行的reader对象。 csvfile可以是支持迭代 协议及其每个next()方法被调用时返回字符串的任何对象 - 文件对象和列表对象都是合适的。

然后只需将它转换成列表,你可以很容易地操作它。

import csv 
import json 

rows = [] 

with open('a.csv', 'rb') as f: 
    reader = csv.reader(f) 
    lines = list(reader) 
    for i in range(0, len(lines), 2): 
     rows.append({lines[i][0]: lines[i + 1]}) 

with open('test.json', 'w') as f: 
    json.dump(rows, f, indent=2, ensure_ascii=False) 

,你会得到:

[ 
    { 
    "Ansprechpartner": [ 
     "Elin Persson", 
     "+46 (0)243 224360", 
     "+46 (0) 243 81322", 
     "[email protected]" 
    ] 
    } 
] 

希望这有助于。