当前位置: 首页 > article >正文

第十四章:JSON和CSV格式详解及Python操作

    在数据处理和开发工作中,JSONCSV是两种非常常见的数据格式。它们各有特点,适用于不同的场景。本文将分别介绍这两种格式的产生原因、应用场景,并结合Python讲解如何操作这两种文件格式,最后用表格总结它们的常用操作及特性资源绑定附上完整资源供读者参考学习!

一、JSON格式

1. 什么是JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但独立于语言,可以在多种编程语言中使用。

2. JSON的产生原因

  • 跨平台数据交换:在Web开发中,前后端需要传递数据,JSON作为一种轻量级格式,可以方便地在不同语言和平台之间传递数据

  • 结构化数据表示:JSON可以很好地表示嵌套结构,适合存储复杂的数据对象。

3. JSON的应用场景

  • API数据传输:RESTful API通常使用JSON格式传递数据。

  • 配置文件:许多应用程序使用JSON作为配置文件格式。

  • 前端与后端交互:前端JavaScript可以直接解析JSON数据,方便数据展示。

4. Python操作JSON文件

4.1 读取JSON文件

Python

​
import json# 打开并读取JSON文件
with open('data.json', 'r', encoding='utf-8') as file:data = json.load(file)# 使用读取的数据
print(data)
print(data['name'])  # 访问具体字段​

4.2 写入JSON文件

Python

import json# 创建一个字典
data = {'name': '张三','age': 30,'city': '北京'
}# 将字典写入JSON文件
with open('person.json', 'w', encoding='utf-8') as file:json.dump(data, file, ensure_ascii=False, indent=4)

5. 实例:创建一个JSON文件作为演示

以下是一个完整的示例,展示如何在Python中创建一个JSON文件,并解释每一步的操作。

5.1 创建一个Python字典

首先,我们创建一个包含一些数据的Python字典。这个字典将被转换为JSON格式

Python

# 创建一个包含个人信息的字典
person = {"name": "张三","age": 30,"city": "北京","is_student": False,"hobbies": ["阅读", "旅行", "编程"],"address": {"street": "长安街123号","zip_code": "100000"}
}

5.2 将字典写入JSON文件

使用Python的json模块将字典写入一个JSON文件。

Python

import json
# 创建一个包含个人信息的字典
person = {"name": "张三","age": 30,"city": "北京","is_student": False,"hobbies": ["阅读", "旅行", "编程"],"address": {"street": "长安街123号","zip_code": "100000"}
}
# 将字典写入JSON文件
with open('person.json', 'w', encoding='utf-8') as file:json.dump(person, file, ensure_ascii=False, indent=4)

5.3 运行代码

运行上述代码后,会在当前目录下生成一个名为person.json的文件。打开这个文件,你会看到如下内容:

JSON

{"name": "张三","age": 30,"city": "北京","is_student": false,"hobbies": ["阅读","旅行","编程"],"address": {"street": "长安街123号","zip_code": "100000"}
}

5.4 验证和使用JSON文件

你可以读取这个JSON文件并使用其中的数据:

Python

import json# 读取JSON文件
with open('person.json', 'r', encoding='utf-8') as file:data = json.load(file)# 使用读取的数据
print(data)
print(data['name'])  # 输出:张三
print(data['hobbies'][0])  # 输出:阅读
print(data['address']['street'])  # 输出:长安街123号

二、CSV格式

1. 什么是CSV?

CSV(Comma-Separated Values)是一种简单的文本文件格式,用于存储表格数据,如电子表格或数据库中的数据。每一行是一个数据记录,每个记录由一个或多个字段组成,字段之间以逗号分隔。

2. CSV的产生原因

  • 表格数据存储:CSV格式简单,适合存储表格化数据

  • 数据交换:许多应用程序支持CSV导入导出,方便数据交换。

3. CSV的应用场景

  • 数据导入导出Excel、Google Sheets等工具支持CSV格式。

  • 数据分析:Python的Pandas库可以方便地处理CSV文件。

  • 日志记录:某些系统会以CSV格式记录日志。

4. Python操作CSV文件

4.1 读取CSV文件

Python

​
import csv# 打开并读取CSV文件
with open('data.csv', 'r', encoding='utf-8') as file:reader = csv.reader(file)for row in reader:print(row)  # 每行是一个列表​
4.2 使用DictReader读取CSV文件(带表头)

Python

​
import csvwith open('data.csv', 'r', encoding='utf-8') as file:reader = csv.DictReader(file)for row in reader:print(row['name'], row['age'])  # 按列名访问​
4.3 写入CSV文件

Python

import csv# 创建数据
data = [['name', 'age', 'city'],['张三', 30, '北京'],['李四', 25, '上海']
]# 写入CSV文件
with open('2001-2017年北京市水资源情况信息.csv', 'w', encoding='GBK', newline='') as file:writer = csv.writer(file)writer.writerows(data)

5. 实例:使用Pandas处理CSV文件

Python

​
import pandas as pd# 读取CSV文件
df = pd.read_csv('data.csv')# 处理数据
print(df.head())  # 查看前几行
print(df.describe())  # 数据统计# 筛选数据
filtered_data = df[df['age'] > 25]
print(filtered_data)​

三、总结:JSON与CSV的常用操作及特性对比

特性JSONCSV
文件结构嵌套结构(对象和数组)表格结构(行和列)
适用场景API数据、配置文件、复杂嵌套数据表格数据、数据导入导出、简单数据存储
文件扩展名.json.csv
读取方式json.load()csv.reader() 或 csv.DictReader()
写入方式json.dump()csv.writer()
数据类型支持支持多种数据类型(字符串、数字、布尔值等)主要支持字符串,需自行解析数据类型
文件大小通常较大(包含键名和结构)通常较小(仅包含值)
可读性结构清晰,适合人类阅读简单直观,适合表格化数据
Python库支持json模块csv模块、pandas

四、总结

JSON和CSV各有优势,选择哪种格式取决于具体需求:

  • 如果需要处理结构化、嵌套的数据,或者用于API通信,JSON是更好的选择。

  • 如果需要处理表格化数据,或者进行数据导入导出,CSV更适合。

   通过Python的标准库(jsoncsv模块)以及第三方库(如pandas),我们可以很方便地操作这两种格式的文件。希望本文能帮助你更好地理解和使用JSON和CSV格式!资源绑定附上完整资源供读者参考学习!

相关文章:

第十四章:JSON和CSV格式详解及Python操作

在数据处理和开发工作中,JSON和CSV是两种非常常见的数据格式。它们各有特点,适用于不同的场景。本文将分别介绍这两种格式的产生原因、应用场景,并结合Python讲解如何操作这两种文件格式,最后用表格总结它们的常用操作及特性。资源…...

双磁条线跟踪控制

1问题 同学反馈小车跟随磁力线,双轮差速小车,左右侧各有2个磁条传感器和各1条磁条线,需要控制小车跟随磁条线轨迹。 2 方法 (1)普通小车可能没有速度反馈,则不考虑转弯半径,仅考虑一个控制关…...

【每日算法】Day 12-1:滑动窗口算法精讲——子串/子数组问题的优化利器(C++实现)

攻克子串问题的效率密码!今日深入解析滑动窗口算法的核心思想与实战技巧,覆盖最小覆盖子串、最长无重复子串等高频场景,彻底掌握O(n)时间复杂度的窗口滑动艺术。 一、滑动窗口核心思想 滑动窗口(Sliding Window) 是一…...

树莓派超全系列文档--(7)RaspberryOS播放音频和视频

播放音频和视频 播放音频和视频VLC 媒体播放器vlc GUIvlc CLI使用 cvlc 在没有图形用户界面的情况下播放媒体 在 Raspberry Pi OS Lite 上播放音频和视频指定音频输出设备指定视频输出设备同时指定音频和视频输出设备提高数据流播放性能 文章来源: http://raspberr…...

chrome浏览器下载和Chrome浏览器的跨域设置

Chrome浏览器的跨域设置 下载chrome浏览器设置chrome跨域 下载chrome浏览器 点击官方下载,然后逐步安装即可 设置chrome跨域 1、然后在D盘创建个文件夹命名为ChromeDevSession。 2、右击chrome浏览器选择属性。 3、在目标编辑栏的最后加上:–disabl…...

Android14 SystemUI中添加第三方AIDL

由于特殊需求,需要在SystemUI中添加第三方AIDL,去做一些客制化的修改。现在记录一下AIDL添加的过程。 1.将AIDL文件拷贝到frameworks/base/packages/SystemUI/src/下,我要添加的AIDL文件是com/test/myctr/IDevicectr.aidl,添加后的…...

Appium中元素定位之一组元素定位API

应用场景 和定位一个元素相同&#xff0c;但如果想要批量的获取某个相同特征的元素&#xff0c;使用定位一组元素的方式更加方便 在 Appium 中定位一组元素的 API 与定位单个元素的 API 类似&#xff0c;但它们返回的是一个元素列表&#xff08;List<MobileElement>&am…...

【高并发内存池】第六弹---深入理解内存管理机制:ThreadCache、CentralCache与PageCache的回收奥秘

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】【项目详解】 目录 1、threadcache回收内存 2、centralcache回收内存 3、pagecache回收内存 1、threadcache回收内…...

累积分布策略思路

一种基于概率密度和累积分布函数的量化交易策略&#xff0c;主要应用于期货市场。该策略通过计算价格数据的概率密度和累积分布函数&#xff08;CDF&#xff09;&#xff0c;结合移动平均线和ATR&#xff08;平均真实范围&#xff09;等技术指标&#xff0c;实现多空交易的自动…...

【JavaScript】九、JS基础练习

文章目录 1、练习&#xff1a;对象数组的遍历2、练习&#xff1a;猜数字3、练习&#xff1a;生成随机颜色 1、练习&#xff1a;对象数组的遍历 需求&#xff1a;定义多个对象&#xff0c;存数组&#xff0c;遍历数据渲染生成表格 let students [{ name: 小明, age: 18, gend…...

RAG、大模型与智能体的关系

一句话总结&#xff1a; RAG&#xff08;中文为检索增强生成&#xff09; 检索技术 LLM 提示。 RAG、大模型与智能体的关系解析 1. 核心概念定义 RAG&#xff08;检索增强生成&#xff09; 是一种结合信息检索与生成式模型的框架&#xff0c;通过从外部知识库&#xff08;如…...

使用firewall-cmd配置SIP端口转发,实现双网卡互通,内外网方式

使用firewall-cmd配置SIP端口转发,实现双网卡,内外网方式 脚本内容 这里以内网IP: 192.168.2.88 这里以外网IP: 10.3.3.3 以下是一个用于启用和停用端口转发的Shell脚本&#xff1a; #!/bin/bash# 配置变量 ZONE"public" TARGET_IP"192.168.2.88" POR…...

Oracle数据库数据编程SQL<3.2 PL/SQL 匿名块中的DML操作、动态SQL、实际应用场景、使用技巧>

匿名块是学习和测试PL/SQL代码的强大工具&#xff0c;特别适合执行一次性任务或快速验证业务逻辑。 目录 一、匿名块中的DML操作 1. INSERT 示例 2. UPDATE 示例 3. DELETE 示例 二、匿名块中的动态SQL 1. EXECUTE IMMEDIATE 2. 动态游标--下篇文章会具体展开详细分享该…...

Spring AI Alibaba 实战:集成 OpenManus 实现智能体应用开发

引言 2024 年 9 月&#xff0c;阿里云正式开源 Spring AI Alibaba&#xff0c;为 Java 开发者提供了一套完整的 AI 应用开发框架&#xff0c;支持与通义系列大模型深度集成&#xff0c;并覆盖了从模型调用到云原生部署的全链路能力。而近期&#xff0c;中国团队发布的通用型 A…...

Linux中《进程状态--进程调度--进程切换》详细介绍

目录 进程状态Linux内核源代码怎么说运行&&阻塞&&挂起内核链表 进程状态查看Z(zombie)-僵尸进程僵尸进程危害孤儿进程 进程优先级进程切换Linux2.6内核进程O(1)调度队列 进程状态 Linux内核源代码怎么说 为了弄明白正在运⾏的进程是什么意思&#xff0c;我们…...

Element PlusAnt-design常问问题详解

Element UI Plus 高频面试问题解析(2025 版) 一、核心组件使用与原理 动态表头实现方案 • 场景:如何根据接口数据动态生成表头? • 技术方案: ◦ 使用 v-for 遍历表头数组生成 el-table-column ◦ 结合 render-header 属性实现复杂表头(如带提示的标题) ◦ 示例代码:通…...

【商城实战(96)】打造商城监控利器Prometheus与Grafana

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

Megatron-LM中的deepseek-v3实现

Megatron-LM&#xff1a;https://github.com/NVIDIA/Megatron-LM/tree/main 使用此仓库构建的著名的库也有很多&#xff0c;如: Colossal-AI, HuggingFace Accelerate, and NVIDIA NeMo Framework.Pai-Megatron-Patch工具是阿里人工智能平台PAI算法团队研发,ai-Megatron-Patch…...

SpringCloud如何整合DeepSeek

SpringCloud 整合 DeepSeek 的核心目标是通过微服务架构调用其分布式文件系统&#xff08;如 3FS&#xff09;或 API 服务。以下从技术选型、整合步骤和关键配置三个方面展开说明&#xff1a; 一、技术选型与架构分析 DeepSeek 服务类型 3FS 分布式文件系统&#xff1a;基于 RD…...

蓝桥杯备考:多米诺骨牌

这道题要求上下方格子和之差要最小&#xff0c;其实就是算每个上下格子的差求和的最小值 这道题其实是动态规划01背包问题 我们直接按步骤做吧 step1:定义状态表示f[i][j]表示从1到i个编号的差值里选出刚好j个数的最小操作次数 step2:推导状态转移方程 如图这就是我们的状态…...

wireshark开启对https密文抓包

HTTPS抓包解密指南 通常情况下&#xff0c;Wireshark只能抓取HTTP的明文包&#xff0c;对于HTTPS的报文需要特殊设置才能抓取。如果不进行设置&#xff0c;抓取到的都是TLS加密报文&#xff0c;这对调试工作造成了很大困难。 前言 提到HTTPS抓包&#xff0c;基本都绕不开SSL…...

AudioFlinger与AudioPoliceManager初始化流程

AF/APF启动流程 在启动AudioSeriver服务的过程中会对启动AF/APF。main_audioserver.cpp有如下代码&#xff1a; AudioFlinger::instantiate();AudioPolicyService::instantiate();AF初始化流程 1.AudioFlinger::instantiate() 1.1 AudioFlinger构造函数 void AudioFlinger:…...

网路传输层UDP/TCP

一、端口号 1.端口号 1.1 五元组 端口号(port)标识了一个主机上进行通信的不同的应用程序. 如图所示, 在一个机器上运行着许多进程, 每个进程使用的应用层协议都不一样, 比如FTP, SSH, SMTP, HTTP等. 当主机接收到一个报文中, 网络层一定封装了一个目的ip标识我这台主机, …...

Python大数据处理 基本的编程方法

目录 一、实验目的 二、实验要求 三、实验代码 四、实验结果 五、实验体会 一、实验目的 体会基本的python编程方法&#xff1b;学习python中的各类函数&#xff1b;了解python读取与写入文件的方法。 二、实验要求 输入2000年后的某年某月某日&#xff0c;判断这一天是…...

STM32F103_LL库+寄存器学习笔记06 - 梳理串口与串行发送“Hello,World“

导言 USART是嵌入式非常重要的通讯方式&#xff0c;它的功能强大、灵活性高且用途广泛。只停留在HAL库层面上用USART只能算是入门&#xff0c;要加深对USART的理解&#xff0c;必须从寄存器层面入手。接下来&#xff0c;先从最简单的USART串行发送开始。 另外&#xff0c;在接…...

硬件基础--14_电功率

电功率 电功率:指电流在单位时间内做的功(表示用电器消耗电能快慢的一个物理量)。 单位:瓦特(W)&#xff0c;简称瓦。 公式:PUI(U为电压&#xff0c;单位为V&#xff0c;i为电流&#xff0c;单位为A&#xff0c;P为电功率&#xff0c;单位为W)。 单位换算:进位为1000&#xff…...

【C#语言】C#文件操作实战:动态路径处理与安全写入

文章目录 ⭐前言⭐一、场景痛点⭐二、完整实现代码⭐三、关键技术解析&#x1f31f;1、动态路径处理&#x1f31f;2、智能目录创建&#x1f31f;3、安全的文件写入 ⭐四、进阶扩展方案&#x1f31f;1、用户自定义路径选择&#x1f31f;2、异常处理增强&#x1f31f;3、异步写入…...

Vue.js 完全指南:从入门到精通

1. Vue.js 简介 1.1 什么是 Vue.js? Vue.js(通常简称为 Vue)是一个用于构建用户界面的渐进式 JavaScript 框架。所谓"渐进式",意味着 Vue 的设计是由浅入深的,你可以根据自己的需求选择使用它的一部分或全部功能。 Vue 最初由尤雨溪(Evan You)在 2014 年创…...

在Git仓库的Readme上增加目录页

一般在编写Readme时想要增加像文章那样的目录&#xff0c;方便快速跳转&#xff0c;但是Markdown语法并没有提供这样的方法&#xff0c;但是可以通过超链接结合锚点的方式来实现&#xff0c;如下图是我之前一个项目里写的Readme&#xff1a; 例如有下面几个Readme内容&#xff…...

C# SolidWorks 二次开发 -各种菜单命令增加方式

今天给大家讲一讲solidworks中各种菜单界面&#xff0c;如下图&#xff0c;大概有13处&#xff0c;也许还不完整哈。 1.CommandManager选项卡2.下拉选项卡3.菜单栏4.下级菜单5.浮动工具栏6.快捷方式工具栏7.FeatureManager工具栏区域8.MontionManager区域 ModelView?9.任务窗…...