Python JSON提取键值对写入到CSV
流程图
flowchart TD
A[读取JSON文件] --> B[解析JSON数据]
B --> C[提取键值对]
C --> D[写入CSV文件]
步骤说明
-
读取JSON文件:首先,我们需要读取包含JSON数据的文件。我们可以使用Python的内置模块
json
来处理JSON数据。具体的代码如下所示:import json with open('data.json') as file: data = json.load(file) # 将JSON数据转换为Python对象
这段代码打开名为
data.json
的文件,并将文件中的JSON数据转换为Python对象。 -
解析JSON数据:在读取JSON数据后,我们需要解析它,以便我们可以访问其中的键值对。下面是相应的代码:
def parse_json(data): result = [] if isinstance(data, dict): # 如果数据是字典类型 for key, value in data.items(): if isinstance(value, (dict, list)): # 如果值是字典或列表类型 result.extend(parse_json(value)) else: result.append((key, value)) elif isinstance(data, list): # 如果数据是列表类型 for item in data: result.extend(parse_json(item)) return result parsed_data = parse_json(data) # 解析JSON数据
这个函数
parse_json
递归地遍历JSON数据,并将每个键值对存储在一个列表中。 -
提取键值对:现在,我们已经解析了JSON数据并将键值对存储在一个列表中。接下来,我们需要从列表中提取键值对,以便我们可以将它们写入CSV文件。下面是相应的代码:
import csv def extract_key_value_pairs(data): keys = set() pairs = [] for key, value in data: keys.add(key) pairs.append((key, value)) return keys, pairs keys, pairs = extract_key_value_pairs(parsed_data) # 提取键值对
这个函数
extract_key_value_pairs
遍历存储键值对的列表,并提取所有的键和键值对。 -
写入CSV文件:现在,我们已经提取了键值对并获得了键的集合。我们需要将这些数据写入CSV文件。下面是相应的代码:
def write_to_csv(keys, pairs): with open('output.csv', 'w', newline='') as file: writer = csv.writer(file) writer.writerow(keys) # 写入表头 for _, values in pairs: writer.writerow([values[key] if key in values else '' for key in keys]) write_to_csv(keys, pairs) # 写入CSV文件
这个函数
write_to_csv
使用csv
模块将键值对写入CSV文件。它首先写入CSV文件的表头(键的集合),然后遍历每个键值对,并将对应的值写入CSV文件中。
完整代码如下:
import json
import csv
def parse_json(data):
result = []
if isinstance(data, dict):
for key, value in data.items():
if isinstance(value, (dict, list)):
result.extend(parse_json(value))
else:
result.append((key, value))
elif isinstance(data, list):
for item in data:
result.extend(parse_json(item))
return result
def extract_key_value_pairs(data):
keys = set()
pairs = []
for key, value in data:
keys.add(key)
pairs.append((key, value))
return keys, pairs
def write_to_csv(keys, pairs):
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(keys)
for _, values in pairs:
writer.writerow([values[key] if key in values else '' for key in keys])
with open('data.json') as file:
data = json.load(file)
parsed_data = parse_json(data)
keys, pairs = extract_key_value_pairs(parsed_data)
write_to_csv(keys, pairs)
以上代码将读取名为data.json
的JSON文件,并将提取的键值对写入名为output.csv
的CSV文件中。
希望这篇文章能够帮助你理解如何使用Python提取JSON键值对并将其写入CSV文件。如果你有任何问题,请随时提问