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

时间:2017-02-17 14:17:09

标签: python arrays json csv pandas

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

输入CSV:

.Form div

输出JSON:

Ansprechpartner, Telefon, Fax, eMail
 Elin Persson,+46 (0)243 224360,+46 (0) 243 81322,info@borlangect.se

我已经存在的输出:

[
  {
    "Ansprechpartner": ["Elin Persson","+46 (0)243 224360","+46 (0) 243 81322","info@borlangect.se"]
  }
]

Python代码:

[
  {
    "Fax": "+46 (0) 243 81322", 
    "eMail": "info@borlangect.se", 
    "Telefon": "+46 (0)243 224360", 
    "Ansprechpartner": "Elin Persson"
  }
]

有人可以帮助我在JSOn文件中创建这个数组吗? 谢谢

1 个答案:

答案 0 :(得分:0)

DictReader将信息映射到dict,你应该使用csv.reader()方法。

  

返回一个读取器对象,它将迭代给定的行   csvfile。 csvfile可以是支持迭代器的任何对象   protocol并在每次调用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", 
      "info@borlangect.se"
    ]
  }
]

希望这有帮助。