【问题标题】:Translating from CSV to JSON从 CSV 转换为 JSON
【发布时间】:2021-03-11 12:57:09
【问题描述】:

我希望将一些数据从 CSV 转换为 Json。

我现在这样做的方式是删除标题并将它们全部重新写成 JSON 作为附录。

是否有更快/更好/更有效的方法来做到这一点,然后重新重写我的所有代码:

以下是我当前的代码:

    with open(filename, "r") as f:
        dataReader = csv.reader(f)
        next(dataReader)
        data = {filename:[]}
        for row in dataReader:
            data[filename].append({"ACTIVITY DATE": row[0], "OWNER ID": row[1], "OWNER NAME": row[2], "FACILITY ID": row[3], "FACILITY NAME": row[4], "RECORD ID": row[5], "PROGRAM NAME": row[6], "PROGRAM STATUS ": row[7], "PROGRAM ELEMENT": row[8], "PE DESCRIPTION": row[9], "FACILITY ADDRESS": row[10], "FACILITY CITY": row[11], "FACILITY STATE": row[12], "FACILITY ZIP": row[13], "SERVICE CODE": row[14], "SERVICE DESCRIPTION": row[15], "SCORE": row[16], "GRADE": row[17] })

【问题讨论】:

  • 这能回答你的问题吗? How to convert csv to json in python?
  • CSV 文件是否有标题行?列的导出顺序是否重要? DictReader 会给你命名列,但如果你想要一个特定的顺序,你无论如何都必须枚举它们。枚举上的循环可能会更紧密。

标签: python json csv dictionary


【解决方案1】:

是的,不要丢弃标题:

with open(filename, "r") as f:
    reader = csv.reader(f)
    header = next(reader)
    data = {
        filename:[
            dict(zip(header, row)) for row in reader
        ]
    }

或者,更直接地,您可以使用 DictReader 代替常规阅读器:

with open(filename, "r") as f:
    reader = csv.DictReader(f)
    data = {filename: list(reader)}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-23
    • 2021-01-08
    • 2019-08-21
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多