在Python中将 JSON 转换为 CSV
JSON 的完整形式是 JavaScript Object Notation 。这意味着由编程语言中的文本组成的脚本(可执行)文件用于存储和传输数据。 Python通过一个名为 JSON 的内置包支持 JSON。要使用此功能,我们在Python脚本中导入 JSON 包。 JSON中的文本是通过quoted-string完成的,该字符串包含{}内键值映射中的值。它类似于Python中的字典。
CSV(逗号分隔值)是一种简单的文件格式,用于存储表格数据,例如电子表格或数据库。 CSV 文件以纯文本形式存储表格数据(数字和文本)。文件的每一行都是一个数据记录。每条记录由一个或多个字段组成,以逗号分隔。使用逗号作为字段分隔符是此文件格式名称的来源。
Refer to the below articles to understand the basics of JSON and CSV.
- Working With JSON Data in Python
- Working with CSV file in Python.
将 JSON 转换为 CSV
对于由键和值对组成的简单 JSON 数据,键将是 CSV 文件的标头,值是描述性数据。
示例:假设 JSON 文件如下所示:
我们想将上面的 JSON 转换为 CSV 文件,并以键为标题。
Python3
# Python program to convert
# JSON file to CSV
import json
import csv
# Opening JSON file and loading the data
# into the variable data
with open('data.json') as json_file:
data = json.load(json_file)
employee_data = data['emp_details']
# now we will open a file for writing
data_file = open('data_file.csv', 'w')
# create the csv writer object
csv_writer = csv.writer(data_file)
# Counter variable used for writing
# headers to the CSV file
count = 0
for emp in employee_data:
if count == 0:
# Writing headers of CSV file
header = emp.keys()
csv_writer.writerow(header)
count += 1
# Writing data of CSV file
csv_writer.writerow(emp.values())
data_file.close()
Python3
import json
import csv
with open('G:\Akhil\jsonoutput.json') as json_file:
jsondata = json.load(json_file)
data_file = open('G:\Akhil\jsonoutput.csv', 'w', newline='')
csv_writer = csv.writer(data_file)
count = 0
for data in jsondata:
if count == 0:
header = data.keys()
csv_writer.writerow(header)
count += 1
csv_writer.writerow(data.values())
data_file.close()
输出:
而且,如果您正在处理如下 JSON 数据:
[
{‘Age’: 18.0, ‘Salary’: 20000.0, ‘Gender’: ‘Male’, ‘Country’: ‘Germany’, ‘Purchased’: ‘N’}
{‘Age’: 19.0, ‘Salary’: 22000.0, ‘Gender’: ‘Female’, ‘Country’: ‘France’, ‘Purchased’: ‘N’}
{‘Age’: 20.0, ‘Salary’: 24000.0, ‘Gender’: ‘Female’, ‘Country’: ‘England’, ‘Purchased’: ‘N’}
]
下面的代码将非常适合您(请在运行前格式化代码)
Python3
import json
import csv
with open('G:\Akhil\jsonoutput.json') as json_file:
jsondata = json.load(json_file)
data_file = open('G:\Akhil\jsonoutput.csv', 'w', newline='')
csv_writer = csv.writer(data_file)
count = 0
for data in jsondata:
if count == 0:
header = data.keys()
csv_writer.writerow(header)
count += 1
csv_writer.writerow(data.values())
data_file.close()