首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python读取JSON键值对并导出为.csv表格

  本文介绍基于Python,读取JSON文件数据,并将JSON文件中指定的键值对数据转换为.csv格式文件的方法。

  在之前的文章Python按需提取JSON文件数据并保存为Excel表格中,我们就介绍过将JSON文件数据保存到.csv格式或.xlsx格式的表格文件中的方法;而本文我们将针对不同的待提取数据特征,给出另一种方法。

  首先,我们来明确一下具体的需求。我们现有一个JSON文件数据,是一个包含多个JSON对象的列表,如下图所示;其中,我们希望将text中的内容提取出来——text中的数据都是以键值对的形式存储的,我们希望的是,将键值对作为.csv格式文件的列名,而则是这一列对应的值;因为这个JSON数据中包含很多个text(每一个text中的所有都是一样的,但是不完全一致),所以我们最后就会得到一个具有很多行的.csv格式文件。

  明确了需求,我们就可以开始代码的撰写。本文所用代码如下。

1#!/usr/bin/env python3

2# -*- coding: utf-8 -*-

3"""

4Created on Fri Sep 15 11:12:01 2023

5

6@author: fkxxgis

7"""

8

9import json

10import csv

11

12json_file = "/Users/ddd/Downloads/single.json"

13

14with open(json_file, 'r') as file:

15    data = json.load(file)

16

17fieldnames = set()

18for item in data:

19    fieldnames.update(json.loads(item['text']).keys())

20

21csv_filename = "/Users/didi/Downloads/output.csv"

22

23with open(csv_filename, 'w', newline='') as csvfile:

24    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

25    writer.writeheader()

26    for item in data:

27        json_string = item['text']

28        row_data = json.loads(json_string)

29        writer.writerow(row_data)

  其中,我们首先通过import语句导入必要的Python模块,包括用于处理JSON数据的json和用于处理CSV文件的csv。

  接下来,我们打开名为single.json的JSON文件并读取其内容,将其存储在data变量中。json.load(file)用于将JSON文件内容加载到Python数据结构中。随后,创建一个空集合fieldnames,用于存储将在CSV文件的头部写入的列名。

  紧接着,我们遍历data列表中的每个元素,其中每个元素是一个包含JSON格式的字符串的字典。对于每个元素,将JSON文本——也就是item['text']解析为字典,并获取该字典中的所有键。这些键将被添加到fieldnames集合中,以便稍后在CSV文件的头部(列名称)使用。

  其次,创建一个CSV文件output.csv以进行写入,使用csv.DictWriter对象初始化,其中指定了要写入的列名(通过fieldnames变量)。使用writer.writeheader()写入CSV文件的头部,这将包含字段名称。最后,遍历data列表中的每个元素,对于每个元素,将JSON文本解析为字典,并将该字典的数据写入CSV文件中,每行对应一个JSON对象。

  执行上述代码,我们即可在指定的结果.csv格式文件中看到我们转换之后的数据结果;如下图所示。其中,紫色框内部分就是列名,也就是我们提取出来的,而则是每一行的数据。

  至此,大功告成。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OKkF1unq0pkpcUFf2nDY_XMA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券