如何通过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文件中创建这个数组? 谢谢
答
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]"
]
}
]
希望这有助于。
可以有多个人吗?在这种情况下,CSV会是什么样子? – languitar
没有,不可能有不止一个人。 –