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

11.3 用Python处理常见文件

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏:
工💗重💗hao💗:野老杂谈
⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.
⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。
⭐️ 全流程数据技术实战指南:全面讲解从数据采集到数据可视化的整个过程,掌握构建现代化数据平台和数据仓库的核心技术和方法。
⭐️ 构建全面的数据指标体系:通过深入的理论解析、详细的实操步骤和丰富的案例分析,为读者提供系统化的指导,帮助他们构建和应用数据指标体系,提升数据驱动的决策水平。
⭐️《遇见Python:初识、了解与热恋》 :涵盖了Python学习的基础知识、进阶技巧和实际应用案例,帮助读者从零开始逐步掌握Python的各个方面,并最终能够进行项目开发和解决实际问题。

摘要

在这篇文章中,我们将探索如何使用 Python 处理各种常见的文件格式。从 CSV、JSON 到 Excel 文件,我们将用生动的故事和幽默的语言来讲解如何读取、写入和处理这些文件。通过实际的代码示例和图示,您将掌握处理这些文件格式的技能,并能在实际开发中应对不同的数据需求。


处理 CSV 文件

CSV(逗号分隔值)文件就像是数据界的瑞士军刀——它们简单、通用,而且几乎无处不在。无论你是数据分析师、软件开发人员,还是 Excel 爱好者,你都会与 CSV 文件打交道。那么,如何用 Python 处理这些文件呢?让我们一起来看看。

CSV 文件的基本操作

假设我们有一个名为 data.csv 的文件,它包含了一些学生的成绩信息。文件内容如下:

姓名,数学,英语,科学
张三,90,80,85
李四,70,60,75
王五,85,95,90

我们可以使用 Python 的 csv 模块来读取和写入 CSV 文件:

import csv# 读取 CSV 文件
with open('data.csv', 'r') as file:reader = csv.reader(file)for row in reader:print(row)# 写入 CSV 文件
data = [['姓名', '数学', '英语', '科学'],['赵六', 88, 76, 92],['孙七', 95, 89, 85]
]with open('new_data.csv', 'w', newline='') as file:writer = csv.writer(file)writer.writerows(data)

这里,我们用 csv.reader 读取文件,用 csv.writer 写入文件。很简单吧?就像用笔记本记录数据一样。

处理 JSON 文件

JSON(JavaScript 对象表示法)是一种轻量级的数据交换格式,适用于结构化数据。你可以把 JSON 想象成是你家里的超级市场:整齐地排列着各种物品(数据),随时可以拿来用。

JSON 文件的基本操作

假设我们有一个名为 data.json 的文件,内容如下:

{"students": [{"name": "张三", "math": 90, "english": 80, "science": 85},{"name": "李四", "math": 70, "english": 60, "science": 75}]
}

我们可以使用 Python 的 json 模块来读取和写入 JSON 文件:

import json# 读取 JSON 文件
with open('data.json', 'r') as file:data = json.load(file)print(data)# 写入 JSON 文件
new_data = {"students": [{"name": "王五", "math": 85, "english": 95, "science": 90},{"name": "赵六", "math": 88, "english": 76, "science": 92}]
}with open('new_data.json', 'w') as file:json.dump(new_data, file, indent=4)

通过 json.load 读取 JSON 文件,通过 json.dump 写入 JSON 文件。JSON 格式的灵活性和可读性使得它在数据交换中非常受欢迎。

处理 Excel 文件

Excel 文件是办公室中最常见的数据存储格式之一。如果 CSV 是数据界的瑞士军刀,那么 Excel 文件就是它的多功能工具箱。使用 Python 处理 Excel 文件,我们可以依靠 pandasopenpyxl 等库来轻松搞定。

Excel 文件的基本操作

假设我们有一个名为 data.xlsx 的文件,它包含了学生成绩的信息。我们可以使用 pandas 库来读取和写入 Excel 文件:

import pandas as pd# 读取 Excel 文件
df = pd.read_excel('data.xlsx')
print(df)# 写入 Excel 文件
new_data = {'姓名': ['王五', '赵六'],'数学': [85, 88],'英语': [95, 76],'科学': [90, 92]
}
df = pd.DataFrame(new_data)
df.to_excel('new_data.xlsx', index=False)

在这个例子中,我们用 pandasread_excel 读取文件,用 to_excel 写入文件。pandas 使数据操作变得简单又高效。

处理 XML 文件

XML(可扩展标记语言)是一种用于存储和传输数据的格式。它就像一个复杂的文件夹结构,可以存储嵌套的、层次化的数据。

XML 文件的基本操作

假设我们有一个名为 data.xml 的文件,内容如下:

<students><student><name>张三</name><math>90</math><english>80</english><science>85</science></student><student><name>李四</name><math>70</math><english>60</english><science>75</science></student>
</students>

我们可以使用 Python 的 xml.etree.ElementTree 模块来读取和写入 XML 文件:

import xml.etree.ElementTree as ET# 读取 XML 文件
tree = ET.parse('data.xml')
root = tree.getroot()for student in root.findall('student'):name = student.find('name').textmath = student.find('math').textprint(f'姓名: {name}, 数学: {math}')# 写入 XML 文件
students = ET.Element('students')student1 = ET.SubElement(students, 'student')
ET.SubElement(student1, 'name').text = '王五'
ET.SubElement(student1, 'math').text = '85'student2 = ET.SubElement(students, 'student')
ET.SubElement(student2, 'name').text = '赵六'
ET.SubElement(student2, 'math').text = '88'tree = ET.ElementTree(students)
tree.write('new_data.xml')

使用 xml.etree.ElementTree 可以轻松地解析和创建 XML 文件,让我们能够处理层次化的数据结构。

处理其他文件格式(如 YAML 和 HDF5)

除了上述文件格式,还有一些其他常见的文件格式,如 YAML 和 HDF5。YAML(YAML 不是标记语言)是一种易于读写的数据序列化格式,而 HDF5(Hierarchical Data Format 5)是一种用于存储和管理大规模数据的格式。

YAML 文件的基本操作

使用 pyyaml 库来处理 YAML 文件:

import yaml# 读取 YAML 文件
with open('data.yaml', 'r') as file:data = yaml.safe_load(file)print(data)# 写入 YAML 文件
new_data = {'students': [{'name': '王五', 'math': 85, 'english': 95, 'science': 90},{'name': '赵六', 'math': 88, 'english': 76, 'science': 92}]
}with open('new_data.yaml', 'w') as file:yaml.dump(new_data, file)
HDF5 文件的基本操作

使用 h5py 库来处理 HDF5 文件:

import h5py# 读取 HDF5 文件
with h5py.File('data.h5', 'r') as file:data = file['dataset'][:]print(data)# 写入 HDF5 文件
with h5py.File('new_data.h5', 'w') as file:file.create_dataset('dataset', data=[1, 2, 3, 4, 5])

结语

在处理各种常见文件格式时,Python 提供了强大的工具和库,帮助我们高效地读取、写入和处理数据。无论是 CSV、JSON、Excel、XML 还是其他格式,掌握这些技能将使你的数据处理工作变得轻松又有趣。希望通过本篇文章,你能够掌握这些文件格式的处理技巧,并在实际工作中运用自如。

标签
  • 文件格式
  • CSV
  • JSON
  • Excel
  • XML

在这里插入图片描述

相关文章:

11.3 用Python处理常见文件

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…...

Linux知识复习第2期

RHCE 远程登录服务-CSDN博客 Linux 用户和组管理_linux用户和组的管理-CSDN博客 Linux 文件权限详解-CSDN博客 目录 1、sshd 免密登录 (1)纯净实验环境 (2)生成密钥 (3)上锁 2、用户管理 (1)添加新用户 (2)删除用户 (3)修改用户信息 (4)为用户账号设…...

驗證HTTP代理的有效性的方法和步驟-okeyproxy

如何驗證HTTP代理的有效性&#xff0c;確保它的性能和安全性&#xff0c;是非常必要的。本文將詳細介紹驗證HTTP代理有效性的方法和步驟。 HTTP代理作為一種仲介伺服器&#xff0c;它可以幫助用戶在訪問目標網站時隱藏真實IP地址&#xff0c;從而提高匿名性和安全性。通過HTTP…...

Java和kotlin 反射机制

Java 反射机制详解 Java 反射机制是一种强大的工具&#xff0c;使得程序可以在运行时动态地获取类的信息&#xff0c;并且可以在运行时操作类的成员变量、方法和构造函数等。以下是 Java 反射的详细讲解&#xff0c;包括其原理、使用场景、优缺点以及如何使用反射。 1. 反射的…...

Linux Shell编程--数组

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除&#xff01; 一、简介 Shell 脚本中的数组允许你存储多个值&#xff0c;并可以通过索引访问它们。Shell 中的数组是一维的。 二、声明数组 在Shell…...

sheng的学习笔记-AI-k近邻学习(kNN)

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 什么是k近邻学习 k近邻&#xff08;k-Nearest Neighbor&#xff0c;简称kNN&#xff09;学习是一种常用的监督学习方法&#xff0c;是一种基本的分类与回归方法。 分类问题&#xff1a;对新的样本&#xff0c;根据其 k 个…...

ShardingSphere之ShardingProxy集群部署

文章目录 介绍使用Zookeeper进行集群部署统一ShardingJDBC和ShardingProxy配置通过Zookeeper注册中心同步配置直接使用ShardingProxy提供的JDBC驱动读取配置文件 介绍 开发者手册 在conf/server.yaml配置文件中有下面这一段配置&#xff0c;就是关于集群部署的 mode: # typ…...

同态加密和SEAL库的介绍(六)BGV 方案

前面介绍 BFV 和 CKKS 加密方案&#xff0c;这两者更为常用。并且也解释了 Batch Encoder 和 级别的概念&#xff0c;这对接下来演示 BGV 会很有帮助。 一、BGV简介 BGV (Brakerski-Gentry-Vaikuntanathan) 方案 是一种基于环学习同态加密&#xff08;RLWE&#xff09;问题的加…...

uniapp微信小程序 canvas绘制圆形半透明阴影 createCircularGradient函数不支持透明度部分解决方案

背景 我需要在微信小程序中&#xff0c;用canvas绘制一个圆形钟表&#xff0c;在ui设计图中&#xff0c;有一部分阴影&#xff0c;这里我节选一下&#xff1a; 即深色发黑的部分 canvas通用阴影绘制 由于canvas中并不支持css那样简单的方式为圆形添加阴影或高光&#xff0c…...

W34KN3SS靶机

信息收集&#xff1a; 靶机地址&#xff1a;https://www.vulnhub.com/entry/w34kn3ss-1,270/# &#xff08;1&#xff09;ip扫描 nmap 192.168.254.0/24 -sn | grep -B 2 00:0C:29:E8:66:AB &#xff08;2&#xff09;端口扫描 nmap -p- -A 192.168.254.145 &#xff08;3&…...

8.9套题

A. 猴猴吃苹果 题意&#xff1a;给定根节点k&#xff0c;求访问点的顺序&#xff0c;使得每次从上一个点到当前点的权值最大。访问过的点权值为0。权值一样时&#xff0c;输出最小编号 思路&#xff1a;由于是双向边&#xff0c;先求根节点到每一个节点的距离值。在第一轮中&…...

Python 爬取网页水务数据并实现智慧水务前端可视化

提示&#xff1a;本文爬取深圳市环境水务集团有限公司的公开数据作为数据样例进行数据分析与可视化。 文章目录 一、爬虫二、对爬取的数据进行数据库、excel的存储与数据处理1.代码实现 三、应用Flask框架将后端获取数据后渲染到前端四、前端Echarts的使用1.下载echarts.min.js…...

百度智能云发布3款轻量级+2款场景大模型

文心大模型ERNIE 3.5是目前百度智能云千帆大模型平台上最受欢迎的基础大模型之一。针对用户的常见通用的对话场景&#xff0c;ERNIE 3.5 在指令遵循、上下文学习和逻辑推理能力三方面分别进行了能力增强。 ERNIE Speed作为三款轻量级大模型中的“大个子”&#xff0c;推理场景…...

UE基础 —— 编辑器界面

菜单栏 UE中每个编辑器都有一个菜单栏&#xff0c;部分菜单会出现在所有编辑器窗口中&#xff0c;如File、Window、Help&#xff0c;其他则是其编辑器特有的&#xff1b; 主工具栏 UE中部分最常用的工具和命令的快捷方式&#xff1b; 1&#xff0c;保存按钮&#xff08;ctrls&a…...

2024年Vue组件库大比拼:谁将成为下一个Element?

2024 年&#xff0c;Vue生态蓬勃发展&#xff0c;越来越多的开发者开始探索更适合自己项目的组件库。 今天我们来看一下2024年最受欢迎的几款Vue开源组件库&#xff0c;除了Element&#xff0c;开发者们还有哪些选择呢&#xff1f; 1.Vuetify Vuetify是由社区支持的Vue组件库&…...

SS9283403 sqlite3交叉编译并部署到SS928(六)

1.Sqlite3下载 连接&#xff1a;SQLite Download Page 2.解压 tar zxvf sqlite-autoconf-3460000.tar.gz 3.配置并编译 进入解压目录&#xff0c;打开命令行&#xff0c;输入如下命令 ./configure CCaarch64-mix210-linux-gcc --hostarm-linux --prefix/home/mc/work/sqlite…...

java3d-1_4_0_01-windows-i586.exe

下载 Java 3D API 安装 C:\Program Files\Java\Java3D\1.4.0_01\bin C:\Java\jre6 C:\Java\jdk1.6.0_45 C:\Windows 记录下这 4 个目录&#xff0c;去检查下 4 哥目录下文件多了什么 检查目录① C:\Program Files\Java\Java3D\1.4.0_01\bin 检查目录② C:\Java\jre6 C:…...

Vue3中的history模式路由:打造无缝导航体验!

Hey小伙伴们&#xff0c;今天给大家带来Vue3中使用history模式路由的实战案例&#xff01;&#x1f31f; &#x1f50d; 项目背景 Vue3的路由功能非常强大&#xff0c;可以帮助我们轻松实现单页面应用中的页面切换。但是你知道吗&#xff1f;默认情况下Vue Router使用的是has…...

python(6)

一、datetime函数 方法一&#xff1a; 前一个datetime是模块。后一个datetime是类型 方法二&#xff1a; 方法三&#xff1a; 二、逆序字符串 三 、旋转字符串...

以Zed项目为例学习大型Rust项目的组织与管理

说明 Zed项目代码&#xff1a;https://github.com/zed-industries/zed.git本文项目代码&#xff1a;https://github.com/VinciYan/zed_workspace.git Zed是一款由Atom创始人开发的高性能、协作友好的现代开源代码编辑器&#xff0c;使用Rust编写&#xff0c;集成AI辅助功能&a…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...

小智AI+MCP

什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析&#xff1a;AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github&#xff1a;https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...

【Redis】Redis从入门到实战:全面指南

Redis从入门到实战:全面指南 一、Redis简介 Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,它可以用作数据库、缓存和消息代理。由Salvatore Sanfilippo于2009年开发,因其高性能、丰富的数据结构和广泛的语言支持而广受欢迎。 Redis核心特点:…...