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

Python学习第十天--处理CSV文件和JSON数据

CSV:简化的电子表格,被保存为纯文本文件

JSON:是一种数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,以JavaScript源代码的形式将信息保存在纯文本文件中 

一、csv模块

CSV文件中的每行代表电子表格中的一行,逗号分隔了该行中的单元格。但并非CSV文件中的每个逗号都表示两个单元格之间的分界。CSV文件也有自己的转义字符,允许逗号和其他字符作为值的一部分。所以总是应该使用csv模块来读写CSV文件。

1、reader对象

reader对象让你迭代遍历CSV文件中的每一行 

使用Python的csv模块读取CSV文件可以归结为以下几个步骤:

  1. 导入csv模块: 首先,你需要导入Python的csv模块,这样你才能使用它提供的功能。

  2. 打开CSV文件: 使用open()函数打开CSV文件。你需要提供文件路径作为参数,并指定模式(通常是'r',表示只读)。

  3. 创建CSV读取器: 将open()函数返回的文件对象传递给csv.reader()函数,这将创建一个CSV读取器对象。

  4. 读取数据: 使用list()函数将CSV读取器对象转换成一个普通的Python列表。这个列表将包含文件中的每一行,其中每一行都是一个列表,包含该行中的所有字段。

  5. 访问数据: 可以用表达式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对象

readerwriter对象通过使用列表对CSV文件的行进行读写。DictReaderDictWriter 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值,它只能包含以下数据类型的值:字符串、整型、浮点型、布尔型、列表、字典和NoneTypeJSON字符串总是用双引号

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…...

AI应用开发平台RiserFlow实战:从架构解析到智能客服构建

1. 项目概述:从“RiserFlow”看现代AI应用开发范式的演进最近在GitHub上看到一个挺有意思的项目,叫riserlabs/riserflow。光看这个名字,可能有点摸不着头脑,但如果你点进去,会发现它其实指向一个更具体的产品&#xff…...

一分钟看懂大模型备案

大模型备案,全称 “生成式人工智能服务上线备案”,是国内面向公众提供大模型服务的法定合规流程,核心是审核模型安全、数据合规与内容可控,未备案违规上线最高罚一千万元,该处罚依据主要来自两大核心法规:1…...

信息安全工程师-网络安全风险评估(上篇):框架、流程与量化基础

一、引言 (一)核心定位与定义 网络安全风险评估是信息安全管理体系的核心方法论,在软考信息安全工程师考试中属于信息安全管理模块的高频考点,占比约 8-10 分。其标准定义为:依据 GB/T 20984-2007《信息安全技术 信息…...

Windows 10终极PL2303驱动修复指南:让老旧串口设备重获新生

Windows 10终极PL2303驱动修复指南:让老旧串口设备重获新生 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 还在为Windows 10系统下的PL2303串口设备无法正…...

如何高效使用Fast-GitHub加速插件:5个提升GitHub访问速度的实用技巧

如何高效使用Fast-GitHub加速插件:5个提升GitHub访问速度的实用技巧 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还…...

AI碳足迹深度解析:从模型压缩到软硬协同的绿色AI实践

1. 从“算力怪兽”到“绿色引擎”:AI碳足迹问题的深度拆解 最近和几个在芯片厂和云服务商工作的老朋友聊天,话题总绕不开一个词:电费。不是开玩笑,现在训练一个大模型,电费账单能轻松超过一个小型数据中心的日常运维成…...

软银携手DeltaX建储能基地,2027年量产应对AI算力电力挑战

软银与DeltaX合作:储能系统建设的新布局品玩5月12日消息,据The Elec报道,软银集团选定韩国初创公司DeltaX,负责在日本大阪建设数据中心储能系统(ESS)的开发与制造。双方计划于今年下半年在大阪堺市原夏普工…...

从零到一:基于C#与ArcGIS二次开发构建迎风面指数计算插件实战

1. 环境准备与工具搭建 第一次接触ArcGIS二次开发时,我被官方文档里密密麻麻的API吓得不轻。后来发现只要配好环境,开发插件比想象中简单得多。你需要准备三样东西:Visual Studio(建议2019或2022社区版)、ArcGIS Desk…...

OpenClaw AI助手公网部署安全加固实战:从SSH防护到成本优化

1. 项目概述:为你的AI助手穿上“防弹衣” 如果你正在一台VPS或云服务器上运行OpenClaw(或者说Clawdbot),并且隐隐觉得“把能执行Shell命令的AI直接暴露在公网上”这事儿有点“刺激”,那你的直觉是对的。这感觉就像把自…...

5个Zutilo技巧让你成为Zotero文献管理高手

5个Zutilo技巧让你成为Zotero文献管理高手 【免费下载链接】Zutilo Zotero plugin providing some additional editing features 项目地址: https://gitcode.com/gh_mirrors/zu/Zutilo 还在为Zotero的批量操作烦恼吗?每天面对成百上千的文献条目,…...