当前位置: 首页 > 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…...

正点原子imx6ull-mini-Linux驱动之Linux RS232/485/GPS 驱动实验(23)

错误1&#xff1a;我一直找不到为什么我的minicom用不了&#xff0c;编译啥的都通过了&#xff0c;原来是我的密码文件命名错了&#xff0c;我就习以为常的命名为password&#xff0c;谁知道应该是passwd&#xff0c;所以以后该复制的还是复制&#xff0c;不然就容易找不到源头…...

用户上下文打通+本地缓存Guava

文章目录 &#x1f31e; Sun Frame&#xff1a;SpringBoot 的轻量级开发框架&#xff08;个人开源项目推荐&#xff09;&#x1f31f; 亮点功能&#x1f4e6; spring cloud模块概览常用工具 &#x1f517; 更多信息1.设计1.链路流程2.详细设计 2.网关过滤器获取唯一标识放到Hea…...

Windows图形界面(GUI)-MFC-C/C++ - 树形视图(Tree Control) - CTreeCtrl

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 树形视图(Tree Control) - CTreeCtrl 创建和初始化 添加和删除项 获取和设置项属性 操作项 项选择变化 项双击 项展开 示例代码 树形视图(Tree Control) - CTreeCtrl 创建和初始…...

C语言 --- 枚举、位运算

&#xff08;一&#xff09;枚举 1.概念&#xff1a;枚举是指将变量的值一一列举出来&#xff0c;变量的值只限于列举出来的值的范围 2.作用&#xff1a;a.提高代码可读性&#xff1b;b.提高代码的安全性 3.枚举类型&#xff1a; enum 枚举名 { 列举各种值 //枚举元素或枚…...

12322222222

当您和老王不在同一个网段时&#xff0c;您们之间的通信需要通过路由器来实现。这是因为不同的网段被视为不同的网络&#xff0c;而路由器的作用之一就是连接不同的网络并负责数据包的转发。下面是详细的通信流程&#xff1a; 本地网络通信尝试&#xff1a;您的设备&#xff0…...

知识改变命运:Java 语言 【可变参数】

可变参数 概念&#xff1a;Java允许一个类中多个同名同功能但是参数不同的方法&#xff0c;封装为一个方法。 基本语法&#xff1a; 访问修饰符 返回值 方法名 (数据类型...参数名) { ...... }案例&#xff1a;写一个类名DyMethod 方法名sum 计算两个整数和&#xff0c;三个整…...

Spring及相关框架的重要的问题

Java框架 问题一&#xff1a;Spring框架中的单例bean是线程安全的吗&#xff1f; 看下图&#xff0c;不能被修改的成员变量就是无状态的类&#xff0c;无状态的类没有线程安全问题&#xff0c;所以在开发中尽量避免可修改的成员变量。 回答&#xff1a;不是线程安全的&#xf…...

Linux Vim教程

Linux Vim 教程 Vim&#xff08;Vi IMproved&#xff09;是一个强大的文本编辑器&#xff0c;广泛用于编程和系统管理。本文将带你全面了解 Vim 的基础使用、常用命令、高级功能等。 1. 安装 Vim 在大多数 Linux 发行版中&#xff0c;Vim 已经预装。如果没有&#xff0c;可以…...

【学习笔记】多进程信号量控制

目录 1、CreateSemaphore 2、ReleaseSemaphore 3、CreateEvent 4、SetEvent 5、WaitForSingleObject 程序案例1&#xff1a; 程序案例2&#xff1a; 1、CreateSemaphore 创建一个计数信号量对象&#xff0c;成功时返回信号量对象的句柄&#xff1b;失败时返回NULL&…...

Redis与Memorycache的区别

Redis与Memorycache主要是持久线程和持久化的区别 1、从性能方面来说&#xff1a; Redis是单线程的&#xff0c;优点是CPU开销小&#xff0c;省去多线程线程之间切换的开销&#xff0c;但是相对于Memorycache来说海量数据的相对较低 Memorycache使用了多线程技术&#xff0c;数…...