如何从 Python 中的 csv 文件生成 JSON?

Posted

技术标签:

【中文标题】如何从 Python 中的 csv 文件生成 JSON?【英文标题】:How to generate JSON from the csv file in Python? 【发布时间】:2019-04-19 10:17:02 【问题描述】:

我正在尝试从 csv 文件构造一个 Json 结构。下面的代码给了我错误说明:-AttributeError: 'tuple' object has no attribute 'to_json'。我是 python 世界的新手,想在这方面寻求您的帮助。

CSV 数据如下所示:

我希望输出如下所示

[
    "Variable": "Latitude",
    "Min": "78",
    "Q1": "89" ,

    "Variable": "Longitude",
    "Min": "78",
    "Q1": "89",
    "Variable": "Zip",
    "Min": "78",
    "Q1": "89"
]

import pandas    
res_data = pd.read_csv("C\\Documents\\abc.csv", 'r')
abc=res_data.to_json(orient='records')
print(abc)

【问题讨论】:

这里的res_df 是什么? 【参考方案1】:
import json
import pandas as pd    
df = pd.read_csv("path_of_csv")
js = df.to_json(orient="records")
json.loads(js)

输出:

['variable': 'Latitude', 'min': 26.84505, 'Q1': 31.19725,
 'variable': 'Longtitude', 'min': -122.315, 'Q1': -116.558,
 'variable': 'Zip', 'min': 20910.0, 'Q1': 32788.5]

【讨论】:

完美。简单而最好的【参考方案2】:

类似

import csv
import json

csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')

fieldnames = ("variable", "min", "Q1")
reader = csv.DictReader( csvfile, fieldnames)
for row in reader:
    json.dump(row, jsonfile)
    jsonfile.write('\n')

【讨论】:

它可以工作,但不能生成正确的 json 结构。每行应该用逗号分隔,整个json应该包含在[]【参考方案3】:

您可以尝试简单地使用csv 模块。

import csv
import json

output_dict = []
with open('abc.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        output_dict.append(row)

print json.dumps(output_dict)

output_dict 将包含包含所有行的 dict 列表。 json.dumps 会将 python dict 转换为 json

输出将是:

['variable': 'Latitude', 'min': 26.84505, 'Q1': 31.19725,
 'variable': 'Longtitude', 'min': -122.315, 'Q1': -116.558,
 'variable': 'Zip', 'min': 20910.0, 'Q1': 32788.5]

有关 csv.DictReader 的更多详细信息:enter link description here

【讨论】:

以上是关于如何从 Python 中的 csv 文件生成 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 中的 argparse 和 csv 库编写文件?

在 python 中从模板文件和 csv 数据生成输出文件

从csv文件导入python时如何替换数字

从 CSV 文件生成 C++ 头文件的 python 脚本(用于数组声明)

如何使用CLI命令在输入文件参数上运行Python脚本来生成输出文件

如何删除从字典生成的csv文件中的列表括号?