【问题标题】:Convert table into JSON将表格转换为 JSON
【发布时间】:2021-02-25 04:08:55
【问题描述】:

我正在尝试将表格(csv 格式)转换为 JSON 格式。

输入 (input.csv)

id,v1,v2,v3
ab,1,2,3
cd,4,5,6
ef,7,8,9

预期输出

[
{"id": "ab", "vars": [{"var": "v1", "value": 1}, {"var": "v2", "value": 2}, {"var": "v3", "value": 3}]},
{"id": "cd", "vars": [{"var": "v1", "value": 4}, {"var": "v2", "value": 5}, {"var": "v3", "value": 6}]},
{"id": "ef", "vars": [{"var": "v1", "value": 7}, {"var": "v2", "value": 8}, {"var": "v3", "value": 9}]}
]

到目前为止,我已经为此编写了一个循环,并且有效

import csv 
import json 

def make_json(csv_path, json_path): 
      
    V1 = {}
    V2 = {}
    V3 = {}
    V = {}
    Vlist = []
      
    with open(csv_path) as csvf: 
        csvReader = csv.DictReader(csvf) 
        
        for rows in csvReader: 
            
            V["id"] = rows["id"]
            
            V1["var"] = "v1"
            V1["value"] = rows['v1']
            V2["var"] = "v2"
            V2["value"] = rows['v2']
            V3["var"] = "v3"
            V3["value"] = rows['v3']
            
            V["vars"] = [V1, V2, V3]
            Vlist.append(V)
            
    json_string = json.dumps(Vlist)
    
    with open(json_path, 'w') as jsonf: 
        jsonf.write(json.dumps(json_string)) 
make_json("input.csv", "my.json")

my.json

[{"id": "ef", "vars": [{"var": "v1", "value": "7"}, {"var": "v2", "value": "8"}, {"var": "v3", "value": "9"}]}, {"id": "ef", "vars": [{"var": "v1", "value": "7"}, {"var": "v2", "value": "8"}, {"var": "v3", "value": "9"}]}, {"id": "ef", "vars": [{"var": "v1", "value": "7"}, {"var": "v2", "value": "8"}, {"var": "v3", "value": "9"}]}]

但是,我真正的 csv 很大,有十几列(非结构化列名。不是 v1、v2、v3)。所以我正在寻找更聪明的解决方案。任何建议都非常感谢。

【问题讨论】:

  • import json 将是最好的起点。 pandas 最容易在文件类型之间进行转换(请参阅下面的答案)
  • 您的输入文件实际上是否包含字段周围的所有 ascii 艺术,还是真的只是 csv?如果是后者,请使用实际格式。

标签: python json bash


【解决方案1】:

快速谷歌搜索发现此链接:https://datatofish.com/csv-to-json-string-python/

相关部分大概是这样的:

import pandas as pd
read_file = pd.read_csv (import_file_path)
...
read_file.to_json (export_file_path)

还有很多在线工具,如果你只需要做一次。 (如:https://csvjson.com/csv2json

【讨论】:

    【解决方案2】:

    使用熊猫:

    import pandas as pd
    pd.read_csv('filename.csv').to_json('filename.json')
    

    【讨论】:

      猜你喜欢
      • 2015-09-02
      • 2013-07-02
      • 2019-12-12
      • 2020-05-09
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      相关资源
      最近更新 更多