【问题标题】:How to create a nested JSON from a simple CSV via Python如何通过 Python 从简单的 CSV 创建嵌套 JSON
【发布时间】:2017-07-07 02:38:52
【问题描述】:

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

输入 CSV:

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

输出 JSON:

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

我已经存在的输出:

[
  {
    "Fax": "+46 (0) 243 81322", 
    "eMail": "info@borlangect.se", 
    "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 文件中创建这个数组吗? 谢谢

【问题讨论】:

  • 可以多人吗?在这种情况下,CSV 会是什么样子?
  • 不,不能超过一个人。

标签: python arrays json csv pandas


【解决方案1】:

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

返回一个读取器对象,它将遍历给定的行 .csv 文件。 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", 
      "info@borlangect.se"
    ]
  }
]

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2013-06-07
    • 2021-11-02
    • 2021-01-01
    • 2017-12-07
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    相关资源
    最近更新 更多