Python 将表转换为JSON
我正在尝试将一个表(csv格式)转换为JSON格式 输入(Input.csv) 预期产出Python 将表转换为JSON,python,json,bash,Python,Json,Bash,我正在尝试将一个表(csv格式)转换为JSON格式 输入(Input.csv) 预期产出 [ {"id": "ab", "vars": [{"var": "v1", "value": 1}, {"var": "v2", "value": 2}, {"var": "v3", &qu
[
{"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))
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 pandas as pd
pd.read_csv('filename.csv').to_json('filename.json')
谷歌快速搜索显示了以下链接: 相关部分可能是:
import pandas as pd
read_file = pd.read_csv (import_file_path)
...
read_file.to_json (export_file_path)
如果你只需要做一次,也有很多在线工具。
(例如:
导入json
将是最好的开始。pandas
将最容易在文件类型之间转换(请参见下面的答案)。您的输入文件是否真的具有所有ascii艺术字段,还是真的只是csv?如果是后者,请使用实际格式。
import pandas as pd
pd.read_csv('filename.csv').to_json('filename.json')
import pandas as pd
read_file = pd.read_csv (import_file_path)
...
read_file.to_json (export_file_path)