Python学习第十天--处理CSV文件和JSON数据
CSV:简化的电子表格,被保存为纯文本文件
JSON:是一种数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,以JavaScript源代码的形式将信息保存在纯文本文件中
一、csv模块
CSV文件中的每行代表电子表格中的一行,逗号分隔了该行中的单元格。但并非CSV文件中的每个逗号都表示两个单元格之间的分界。CSV文件也有自己的转义字符,允许逗号和其他字符作为值的一部分。所以总是应该使用csv模块来读写CSV文件。
1、reader对象
reader对象让你迭代遍历CSV文件中的每一行
使用Python的csv模块读取CSV文件可以归结为以下几个步骤:
导入csv模块: 首先,你需要导入Python的csv模块,这样你才能使用它提供的功能。
打开CSV文件: 使用
open()函数打开CSV文件。你需要提供文件路径作为参数,并指定模式(通常是'r',表示只读)。创建CSV读取器: 将
open()函数返回的文件对象传递给csv.reader()函数,这将创建一个CSV读取器对象。读取数据: 使用
list()函数将CSV读取器对象转换成一个普通的Python列表。这个列表将包含文件中的每一行,其中每一行都是一个列表,包含该行中的所有字段。访问数据: 可以用表达式
exampleData[row] [col]来访问特定行和列的值。
import csv
exampleFile = open("example.csv")
exampleReader = csv.reader(exampleFile)
exampleData = list(exampleReader)
print(exampleData)>> [['4/5/2015 13:34', 'Apples', '73'], ['4/5/2015 3:41', 'Cherries', '85'], ['4/6/2015 12:46', 'Pears', '14'], ['4/8/2015 8:59', 'Oranges', '52']]
2、在for循环中,从reader对象读取数据
对于大型的CSV文件,你需要在一个for循环中使用reader对象。这样可以避免将整个文件一次性装入内存。
import csv
exampleFile = open("example.csv")
exampleReader = csv.reader(exampleFile)
for row in exampleReader: #line_num变量为当前行的编号print('Row #' + str(exampleReader.line_num) + ' ' + str(row))
3、writer对象
writer对象让你将数据写入 CSV 文件。
import csv
exampleFile = open("example.csv","w",newline="")
exampleWriter = csv.writer(exampleFile)
exampleWriter.writerow([1,2,3,45,5])
exampleWriter.writerow(['Hello', 'eggs', 'bacon', 'ham'])
exampleWriter.writerow(['Hello,', 'eggs,', 'bacon,', 'ham,'])
在Windows操作系统上,需要为open()函数的newline关键字参数传入一个空字符串,保证文件单倍行距
在CSV文件中,writer对象使用双引号自动转义了'Hello, world!'中的逗号

4、delimiter和lineterminator关键字参数
delimiter:分隔符。默认情况下,CSV文件的分隔符是逗号。
lineterminator:行终止字符。默认情况下,行终止字符是换行符。
例如:希望用制表符代替逗号来分隔单元格,并希望有两倍行距
import csv
exampleFile = open("example.csv","w",newline="")
exampleWriter = csv.writer(exampleFile,delimiter='\t', lineterminator='\n\n')
exampleWriter.writerow([1,2,3,45,5])
exampleWriter.writerow(['Hello', 'eggs', 'bacon', 'ham'])
exampleWriter.writerow(['Hello,', 'eggs,', 'bacon,', 'ham,'])

5、DictReader和DictWriter CSV对象
reader和writer对象通过使用列表对CSV文件的行进行读写。DictReader和DictWriter CSV对象实现相同的功能,但使用的是字典,且它们使用CSV文件的第一行作为这些字典的键。
1)DictReader
例子:第一行列标题为Name,Pet和Phone

import csv
exampleFile = open("example.csv")
exampleReader = csv.DictReader(exampleFile)
for row in exampleReader:print(row['Name'], row['Pet'], row['Phone'])
如果csv文件中第一行不是列标题,想使用键值对形式读取文件时,在DictReader()中添加一个参数即可:
exampleDictReader = csv.DictReader(exampleFile, ['Name', 'Pet', 'Phone'])
2)DictWriter
import csv
exampleFile = open("example.csv","w",newline="")
exampleDictWriter = csv.DictWriter(exampleFile,fieldnames=["Name","Pet","Phone"])
exampleDictWriter.writeheader()
exampleDictWriter.writerow({'Name': 'Alice', 'Pet': 'cat', 'Phone': '555- 1234'})
exampleDictWriter.writerow({'Name': 'Bob', 'Phone': '555-9999'})
exampleDictWriter.writerow({'Phone': '555-5555', 'Name': 'Carol', 'Pet': 'dog'})
writeheader() 方法决定包含标题行
传入writerow()的字典中的键-值对的顺序并不重要:它们是按照给DictWriter()的键的顺序写的。
二、JSON和API
JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
许多网站应用API允许开发者请求数据,并JSON格式返回数据,使得开发者可以轻松地进行数据交换和网络编程。
例子:JSON文件格式
{"name": "John Doe","age": 30,"isEmployed": true,"address": {"street": "123 Main St","city": "Anytown","state": "CA","zip": "12345"},"phoneNumbers": [{"type": "home","number": "555-1234"},{"type": "office","number": "555-5678"}],"children": null,"hobbies": ["reading", "hiking", "coding"]
}
三、json模块
JSON不能存储每一种Python值,它只能包含以下数据类型的值:字符串、整型、浮点型、布尔型、列表、字典和NoneType。JSON字符串总是用双引号
1、用loads()函数读取JSON
这个名字的意思是“load string”,而不是“loads”
loads()函数将该数据返回为一个Python字典
import json
stringOfJsonData = '{"name": "Zophie", "isCat": true, "miceCaught": 0,"felineIQ": null}'
jsonDataAsPythonValue = json.loads(stringOfJsonData)
print(jsonDataAsPythonValue)>> {'name': 'Zophie', 'isCat': True, 'miceCaught': 0, 'felineIQ': None}
2、用dumps函数写出JSON
json.dumps()函数表示“dump string”,而不是“dumps”,将一个Python值转换成JSON格式的数据字符串。
import json
pythonValue = {'isCat': True, 'miceCaught': 0, 'name': 'Zophie', 'felineIQ': None}
stringOfJsonData = json.dumps(pythonValue)
print(stringOfJsonData)>> {"isCat": true, "miceCaught": 0, "name": "Zophie", "felineIQ": null}
相关文章:
Python学习第十天--处理CSV文件和JSON数据
CSV:简化的电子表格,被保存为纯文本文件 JSON:是一种数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,以JavaScript源代码的形式将信息保存在纯文本文件中 一、csv模块 CSV文件中的每行代表电…...
python基础(一)
python语言特点 解释型语言代码执行过程中通过解释器将代码转换为机器语言,并立即执行;编译型语言执行前需要经过编译整个代码文件为机器语言的可执行文件,然后执行能找出大部分错误错误处理解释型语言在运行时发现错误,编译型语…...
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。 carbon 目前已捐赠给 dromara 开源组织,已被 awesome-go 收录&am…...
守护进程
目录 守护进程 前台进程 后台进程 session(进程会话) 前台任务和后台任务比较好 本质 绘画和终端都关掉了,那些任务仍然在 bash也退了,然后就托孤了 编辑 守护进程化---不想受到任何用户登陆和注销的影响编辑 如何…...
学习日记_20241126_聚类方法(自组织映射Self-Organizing Maps, SOM)
前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…...
【接口自动化测试】一文从0到1详解接口测试协议!
接口自动化测试是软件开发过程中重要的环节之一。通过对接口进行测试,可以验证接口的功能和性能,确保系统正常运行。本文将从零开始详细介绍接口测试的协议和规范。 定义接口测试协议 接口测试协议是指用于描述接口测试的规范和约定。它包含了接口的请求…...
安全设备-日志审计-系统安装部署配置
3.1 系统安装部署概述 通过系统初始化安装部署,可实现对系统的基础管理工作。系统安装基本部署涉及功能有时间配置、 资产组、资产、用户组、用户、时间配置等) 3.2 系统安装部署配置举例 3.2.1 用户场景 本阶段进行系统安装,进行相关设…...
【ArcGIS Pro】实现一下完美的坐标点标注
在CAD里利用湘源可以很快点出一个完美的坐标点标注。 但是在ArcGIS Pro中要实现这个效果却并不容易。 虽然有点标题党,这里就尽量在ArcGIS Pro中实现一下。 01 标注实现方法 首先是准备工作,准备一个点要素图层,包含xy坐标字段。 在地图框…...
Unity项目性能优化列表
1、对象池 2、检查内存是否泄露。内存持续上升(闭包、委托造成泄露) 3、检查DrawCall数量,尽量减少SetPassCall 4、尽量多的利用四种合批 动态合批(Dynamic Batching)静态合批(Static Batching)GPUInstancingSRP Batcher 动态合批消耗内存把多个网格组合在一起合并…...
【系统架构设计师】高分论文:论软件架构的生命周期
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 摘要正文摘要 2022 年5月,本人所在的某集团公司承接了财务共享服务平台综合管理系统的项目开发,该项目主要实现财务系统主流业务的集成共享。本人担任项目组成员中的系统架构设计师一职,全面负责项目的全生命周…...
流量控制和拥塞控制的区别
流量控制和拥塞控制是TCP协议中两个重要的机制,它们分别用于解决不同的问题。 流量控制 流量控制的目的是防止发送方发送数据过快,导致接收方来不及接收,从而避免分组丢失。流量控制是通过滑动窗口机制实现的,接收方在返回的ACK…...
CSS 背景、阴影和混合模式
网站的好坏在于细节,在实现页面里某个组件的布局并写完样式之后,不要急着继续,有意识地训练自己,以挑剔的眼光审视刚刚完成的代码。 1 背景与渐变 background-image 指定文件或者生成的颜色渐变为背景图片。 background-origin…...
第49届ICPC亚洲区域赛,非凸科技再次支持上海赛站
11月16日-17日,第49届ICPC国际大学生程序设计竞赛亚洲区域赛上海站在上海大学宝山校区成功举办,来自全国各地222所高校、中学、企业的352支参赛队伍同台竞技。非凸科技高度重视ICPC竞赛,再次荣膺上海赛站合作伙伴,共同推动全球信息…...
良好的并发编程习惯之封闭(Confinement)
创作内容丰富的干货文章很费心力,感谢点过此文章的读者,点一个关注鼓励一下作者,激励他分享更多的精彩好文,谢谢大家! “共享可变状态”有两个要点:“共享”和“可变”。封闭的策略是:不共享就完…...
docker镜像、容器、仓库介绍
docker docker介绍docker镜像命令docker容器命令docker仓库 docker介绍 官网 Docker 是一种开源的容器化平台,用于开发、部署和运行应用。它通过将应用程序及其依赖项打包到称为“容器”的单一包中,使得应用能够在任何环境下运行,不受底层系…...
写个添加球队和展示球队的功能--laravel与inertia
先展示下最终效果,如下是展示球队的界面 如下是添加球队的界面 界面样式没怎么调整,不要在意这些细节。先说说操作流程 首先需要登录,没注册就注册一个账号。登录界面就不展示了。然后选中”NbaBasketballTeams“这个选项,就进入了展示球队的界面。然后点击…...
自制Windows系统(十)
上图 (真的不是Windows破解版) 开源地址:仿Windows...
World of Warcraft /script SetRaidTarget(“target“, n, ““) n=8,7,6,5,4,3,2,1,0
魔兽世界执行当前目标标记方法 /script SetRaidTarget("target", n, "") n8,7,6,5,4,3,2,1,0 解析这个lua脚本 D:\Battle.net\World of Warcraft\_classic_\Interface\AddOns\wMarker wMarker.lua /script SetRaidTarget("target", 8, &quo…...
Rust中Tracing 应用指南
欢迎来到这篇全面的Rust跟踪入门指南。Rust 的tracing是一个用于应用程序级别的诊断和调试的库。它提供了一种结构化的、异步感知的方式来记录日志和跟踪事件。与传统的日志记录相比,tracing能够更好地处理复杂的异步系统和分布式系统中的事件跟踪,帮助开…...
海外媒体发稿:根据您的要求编写二十个文案标题方法-华媒舍
本文旨在科普解读并描述标题中所包含的二十个爆款文案,为读者提供更深入的了解和知识。通过对每个标题进行拆解描述,我们将深入探讨各个文案标题的背后含义和吸引人之处。 1、"10个你不可忽视的秘密技巧,提升你的生活品质!&q…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
