Python提取JSON数据中的键值对并保存为.csv文件

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

  在之前的文章Python提取JSON文件中的指定数据并保存在CSV或Excel表格文件内(https://blog.csdn.net/zhebushibiaoshifu/article/details/132572161)中,我们就介绍过将JSON文件数据保存到.csv格式或.xlsx格式的表格文件中的方法;而本文我们将针对不同的待提取数据特征,给出另一种方法。

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

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

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Sep 15 11:12:01 2023@author: fkxxgis
"""import json
import csvjson_file = "/Users/ddd/Downloads/single.json"with open(json_file, 'r') as file:data = json.load(file)fieldnames = set()
for item in data:fieldnames.update(json.loads(item['text']).keys())csv_filename = "/Users/didi/Downloads/output.csv"with open(csv_filename, 'w', newline='') as csvfile:writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()for item in data:json_string = item['text']row_data = json.loads(json_string)writer.writerow(row_data)

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

  接下来,我们打开名为single.jsonJSON文件并读取其内容,将其存储在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格式文件中看到我们转换之后的数据结果;如下图所示。其中,紫色框内部分就是列名,也就是我们提取出来的,而则是每一行的数据。

  至此,大功告成。

欢迎关注:疯狂学习GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows PostgreSql 创建多个数据库目录

1 使用默认用户Administrator 1.1初始化数据库目录 E:\Program Files\PostgreSQL\13> .\bin\initdb -D G:\DATA\pgsql\data3 -W -A md5 1.2连接数据库 这时User为Administrator,密码就是你刚才设置的,我设置的为123456,方便测试。 2 添加…

黑马JVM总结(九)

(1)StringTable_调优1 我们知道StringTable底层是一个哈希表,哈希表的性能是跟它的大小相关的,如果哈希表这个桶的个数比较多,元素相对分散,哈希碰撞的几率就会减少,查找的速度较快&#xff0c…

Meta分析核心技术

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

代码随想录算法训练营19期第53天

1143.最长公共子序列 视频讲解:动态规划子序列问题经典题目 | LeetCode:1143.最长公共子序列_哔哩哔哩_bilibili 代码随想录 初步思路:动态规划。 总结: dp[i][j] :长度为[0, i - 1]的字符串A与长度为[0, j - 1]…

【微服务】六. Nacos配置管理

6.1 Nacos实现配置管理 配置更改热更新 在nacos左侧新建配置管理 Data ID:就是配置文件名称 一般命名规则:服务名称-环境名称.yaml 配置内容填写:需要热更新需求的配置 配置文件的id:[服务名称]-[profile].[后缀名] 分组&#…

Vuex详解:Vue.js的状态管理方案

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

启动微服务,提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

说明:启动一些微服务后,一直在报下面这个错误; com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not acc…

【学习笔记】CF1770F Koxia and Sequence

发现每个位置是等价的,这样如果 n n n为偶数那么答案是 0 0 0,否则为所有方案数中 a 1 a_1 a1​的异或和 发现题目设计的非常巧妙,加上 ( OR i 1 n a i ) ⊆ y (\text{OR}_{i1}^n a_i)\subseteq y (ORi1n​ai​)⊆y 的限制过后&#xff0c…

uniapp抽取组件绑定事件中箭头函数含花括号无法解析

版本: "dcloudio/uni-ui": "^1.4.27", "vue": "> 2.6.14 < 2.7"... 箭头函数后含有花括号的时候, getData就拿不到val参数 , 解决办法就是去除花括号 // 错误代码: <SearchComp change"(val) > { getData({ val …

Layui快速入门之第十节 表单

目录 一&#xff1a;基本用法 二&#xff1a;输入框 普通输入框 输入框点缀 前置和后置 前缀和后缀 动态点缀 密码显隐 内容清除 自定义动态点缀 点缀事件 三&#xff1a;复选框 默认风格 标签风格 开关风格 复选框事件 四&#xff1a;单选框 普通单选框 自…

8.Spring EL与ExpressionParser

Spring EL与ExpressionParser 文章目录 Spring EL与ExpressionParser介绍**使用SpEL来计算评估文字字符串表达式**使用SpEL来计算评估 bean 属性 – “item.name” 介绍 Spring表达式语言(SpEL)支持多种功能&#xff0c;并且可以测试这个特殊的“ExpressionParser”接口的表达…

跨域问题解决方案(三种)

Same Origin Policy同源策略&#xff08;SOP&#xff09; 具有相同的Origin&#xff0c;也即是拥有相同的协议、主机地址以及端口。一旦这三项数据中有一项不同&#xff0c;那么该资源就将被认为是从不同的Origin得来的&#xff0c;进而不被允许访问。 Cross-origin resource…

docker快速安装redis,mysql,minio,nacos等常用软件【持续更新】

redis ①拉取镜像 docker pull redis② 创建容器 docker run -d --name redis --restartalways -p 6379:6379 redis --requirepass "PASSWORD"–requirepass “输入你的redis密码” nacos ①&#xff1a;docker拉取镜像 docker pull nacos/nacos-server:1.2.0②…

Jsoup | Document | HTML解析器

Jsoup 一、获取 <p>标签下的所有图片 一、获取 <p>标签下的所有图片 <p> <img style"max-width: 100%;" src"http://image.svipjf.cn/1678271098160-480_01.jpg"/><img src"http://image.svipjf.cn/1678271097994-480_02…

uni-app使用CSS实现无限旋转动画

本来想用uni.createAnimation创建一个旋转动画&#xff0c;发现转完一圈后就不动了&#xff0c;没法循环旋转&#xff0c; 后来又用setInterval每隔一个周期就把旋转角度加180度&#xff0c;发现运行一段时间后动画逐渐崩坏&#xff0c;应该是动画的周期和定时器的周期时间没有…

leetcode做题笔记141. 环形链表

给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;…

睿趣科技:现在开抖音小店还来得及吗

抖音&#xff0c;作为一款风靡全球的社交短视频应用&#xff0c;已经在短短几年内改变了人们的生活方式和商业模式。随着抖音上涌现出越来越多的网红和小店&#xff0c;许多人开始考虑是否还有机会在这个领域创业。那么&#xff0c;现在开抖音小店还来得及吗? 首先&#xff0c…

编程获取图像中的圆半径

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 即将推出EmguCV的教程&#xff0c;请大家还稍作等待。 之前网友咨询如何获得图像中圆形的半径&#xff0c;其中有两个十字作为标定…

React-Redux 老版本 connext的使用记录(只为记录)

注&#xff1a;新版 redux 用法中 使用useSelector、useDispatch替代connect&#xff0c;这里只做老用法的记录使用。 ​Redux最新用法参考 个人React专栏react初级学习 React-Redux是一个用于将React应用程序连接到Redux状态管理器的库。以下是React-Redux的简单用法示例&…

力扣第43天----第300题、第674题、第718题

# 力扣第43天----第300题、第674题、第718题 文章目录 一、第300题--最长递增子序列二、第674题--最长连续递增序列三、第718题--最长连续递增序列 一、第300题–最长递增子序列 ​ 现在做这种动态规划的题&#xff0c;感觉简单很多了。具体地&#xff0c;也没啥太多可说的。。…