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

正则表达式、文件访问(Python实现)

一、主要目的

1.了解正则表达式的基本概念和处理过程。

2.掌握使用正则表达式模块 Re 进行字符串处理的方法。

3.了解文件的基本概念和类型。

4.掌握在 Python 中访问文本文件的方法和步骤。

5.熟悉在 Python 中访问二进制文件的方法和步骤。

二、主要内容和结果展示:

1.编写一个程序,使用正则表达式校验输入的手机号是否正确。

import restr = input("请输入手机号:")reg = r"\b1[3-9]\d{9}\b"res = re.match(reg, str, re.M)if res:print("校验输入的手机号正确。")else:print("校验输入的手机号不正确。")

2.编写一个程序,使用正则表达式校验输入的车牌号是否正确。

import restr = input("请输入车牌号:")reg1 = r"\b[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{5}\b"flag1 = re.findall(r"[A-HJ-NP-Z]",str)if len(flag1) > 3:print("校验输入的车牌号不正确。")exit(0)reg2 = r"\b[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]\d{6}\b"reg3 = r"\b[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z]\d{5}\b"reg4 = r"\b[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]\d{5}[A-HJ-NP-Z]\b"reg5 = r"\b[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z]{2}\d{4}\b"res1 = re.match(reg1, str, re.M)res2 = re.match(reg2, str, re.M)res3 = re.match(reg3, str, re.M)res4 = re.match(reg4, str, re.M)res5 = re.match(reg5, str, re.M)if res1 or res2 or res3 or res4 or res5:print("校验输入的车牌号正确。")else:print("校验输入的车牌号不正确。")

3.编写一个程序,通过键盘将曹操的《观沧海》写入文本文件gch.txt 中。

str = input("请输入观沧海:")with open("gch.txt","w") as file:num = file.write(str)if num != 0:print("写入字符串成功!")

4.编写一个程序实现如下功能:

(1)随机产生 20个1~100之间的随机整数,写入文本文件sjs.txt 中。

(2)从文本文件 sjs.txt 中读出数据,计算并输出标准方差。

import randomlist1 = []sum = 0d = 0for x in range(20):list1.append(str(random.randint(1,100)))with open("sjs.txt","w") as file:file.writelines(list1)print("写入20个1-100之间的随机整数成功!")with open("sjs.txt","r") as f:str = f.readlines()for i in str:sum += int(i)aver = sum / 20for j in str:d += (int(j) - aver) ** 2d /= 20print("方差为",d)

5.编写一个程序,将文本文件 file1.txt 中的内容复制到文本文件file2.txt(空文件)中。

with open("file1.txt","w") as file1:num1 = file1.write("此为文件file1!")with open("file2.txt","w") as file1:num1 = file1.write("此为文件file2!")with open("file2.txt","w") as file2:with open("file1.txt","r") as file1:str = file1.read()num2 = file2.write(str)print("file1复制成功!")

6.编写一个程序,将文本文件 filel.txt 中的内容连接到文本文件 file2.txt 的内容后面。

with open("file1.txt","w") as file1:num1 = file1.write("此为文件file1!")with open("file2.txt","w") as file1:num1 = file1.write("此为文件file2!")with open("file2.txt","a") as file2:with open("file1.txt","r") as file1:str = file1.read()num2 = file2.write(str)print("file1复制成功!")

7.有两个文本文件(a.txt 和b.txt),各存放一行英文字母,要求把这两个文件中的信息合并(按字母顺序排列),写到一个新文件c.txt 中。

with open("a.txt","w") as file1:num1 = file1.write("hello")with open("b.txt","w") as file2:num2 = file2.write("welcome")with open("c.txt","w") as file5:with open("a.txt","r") as file3:str1 = file3.read()with open("b.txt","r") as file4:str2 = file4.read()str3 = sorted(list(str1+str2))num3 = file5.write(" ".join(str3))print("两个文件中的信息合并成功!")

8.编写一个程序,分别将一个数字、字符串、列表、元组、字典和集合写入一个二进制文件bFile.dat 中,然后从二进制文件 bFile.dat 中读出并显示。

import picklenum1 = 2str2 = "Hello world!"list3 = [1,2,3,4,5]tuple4 = (6,7,8)dict5 = {1:"H",2:"i",3:"!"}set6 = {9,10}data = [num1, str2, list3, tuple4, dict5, set6]with open("bFile.dat","wb") as pickle_file:for i in data:pickle.dump(i, pickle_file)print("写入数据成功!")with open("bFile.dat","rb") as pickle_file:data1 = pickle.load(pickle_file)print("数字为",data1)data2 = pickle.load(pickle_file)print("字符串为", data2)data3 = pickle.load(pickle_file)print("列表为", data3)data4 = pickle.load(pickle_file)print("元组为", data4)data5 = pickle.load(pickle_file)print("字典为", data5)data6 = pickle.load(pickle_file)print("集合为", data6)

三、心得体会

   在实验中,学习了如何使用正则表达式来验证中国的手机号和车牌号格式的正确性。这些任务演示了正则表达式强大的模式匹配能力,它能够识别符合特定规则的字符串。在这个过程中,意识到编写和理解正则表达式可能需要一些时间,但一旦掌握,它可以极大地简化字符串处理任务。同时,还操作了文本和二进制文件,实现了不同的功能,如数据写入、读取、计算标准方差、文件内容复制和合并等。你还使用了pickle模块来进行Python数据结构的序列化和反序列化,这是在二进制文件中存储复杂数据的有效方法。

1. 正则表达式的强大:正则表达式在进行复杂字符串匹配和搜索时的强大功能。通过适当的模式,几乎可以识别和验证任何形式的字符串数据。

2. 文件操作的灵活性:Python的文件操作非常灵活,可以很容易地处理文本和二进制数据。文本文件适用于人类可读的数据,而二进制文件则适用于存储和传输序列化数据。

3. 数据持久化的重要性:通过实验,了解到了数据持久化的重要性。将数据写入文件,可以在程序关闭后保留数据,并且在以后可以重新加载和处理这些数据。

  在实验中可能遇到了一些问题,通过查阅文档、编写和调试代码来解决这些问题,解决能力和逻辑思维能力也得到了提升。对Python语法和使用Python标准库中的模块(如`re`和`pickle`)也有了更深的理解和实践。

相关文章:

正则表达式、文件访问(Python实现)

一、主要目的: 1.了解正则表达式的基本概念和处理过程。 2.掌握使用正则表达式模块 Re 进行字符串处理的方法。 3.了解文件的基本概念和类型。 4.掌握在 Python 中访问文本文件的方法和步骤。 5.熟悉在 Python 中访问二进制文件的方法和步骤。 二、主要内容和结…...

ES高级查询

ES中提供了一种强大的检索数据方式,这种检索方式称为Query DSL,这种方式的丰富查询语法让ES检索变得更强大,更简洁。 1.常见查询 1.1查询所有[match_all] match_all关键字:返回索引中的全部文档。 GET /products/_search { &…...

RT-Thread入门笔记6-空闲线程及两个常用的钩子函数

空闲线程 空闲线程是一个比较特殊的系统线程,它具备最低的优先级。当系统中无其他就绪线程可运行时,调度器将调度到空闲线程。 空闲线程还负责一些系统资源回收以及将一些处于关闭态的线程从线程调度列表中移除的动作 空闲线程在形式上是一个无线循环结…...

网络正常运行时间监控工具

正常运行时间是衡量系统可靠性的指标,表示为机器工作和可用时间的百分比。当提到 IT 网络时,正常运行时间是衡量网络设备、网站和其他服务的可用性的指标。网络正常运行时间通常以百分位数来衡量,例如“五个 9”,这意味着系统在 9…...

DEJA_VU3D - Cesium功能集 之 112-获取圆节点(1)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码…...

Matlab 建文件夹保存本次仿真图表数据和参数

文章目录 前言代码 前言 有时候跑的仿真参数非常多,保存结果的时候需要把仿真参数和数据一起保存,为方便起见,查了一下怎么建文件夹自动保存本次仿真图表数据和参数,再也不用担心忘记结果是什么参数跑出来的了~ 代码 % 定义变量…...

@JsonFormat与@DateTimeFormat

JsonFormat注解很好的解决了后端传给前端的格式,我们通过使用 JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题 其次,另一个问题是,我们在使用WEB服务的时,可 能会需要用到,传入时间给后台&am…...

半监督学习 - 自训练(Self-training)

什么是机器学习 半监督学习中的自训练(Self-training)是一种利用已标记数据和未标记数据进行模型训练的方法。以下是自训练的详细教程: 步骤一:准备数据集 标记数据集: 收集和标记一小部分数据,用于有监…...

outlook邮件群发单显技巧?群发怎么单显?

outlook邮件群发单显如何设置?QQ邮箱怎么群发单显? 在群发邮件时,如何让每个收件人只看到自己的名字,而不是其他人的名字,这就涉及到所谓的“单显”技巧。下面蜂邮EDM就为大家揭秘Outlook邮件群发单显的奥秘。 outlo…...

【REST2SQL】07 GO 操作 Mysql 数据库

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 MySQL是一个关系型数据库管理系统&#xf…...

[UI5] ODATA V4中的CRUD

文章目录 前言一、Read二、Create三、Update四、Delete 前言 ODATA V4在CRUD方面与V2截然不同。 这篇文章简单介绍V4中是如何进行CRUD操作 一、Read Model不再有read方法, 一般是把Path绑定到View中进行读取, 如果需要额外的读取数据,可使用…...

js封装根据年月日获取星座效果demo(整理)

//根据年月日获取星座 function getZodiacSign(dateString) {// 用法:const dateStr 2024-01-11;// const zodiacSign getZodiacSign(dateStr);const date new Date(dateString);const month date.getMonth() 1;const day date.getDate();if ((month 1 && day &…...

Vue.js设计与实现阅读-2

Vue.js设计与实现阅读-2 1、前言2、框架设计的核心要素2、1 提升用户体验2、2 控制代码体积2、3 Tree-Shaking2、4 特性开关2、5 错误处理 1、前言 上一篇我们了解到了 命令式和声明式的区别,前者关注过程,后者关注结果了解了虚拟dom存在的意义&#x…...

GEM5 McPAT教程:源代码解读McPAT NoC功耗 arbiter部分

简介 McPAT用的很多,大多只是写个python或perl脚本替换xml文件.没有深入到为什么xml脚本这些值要换,以及这写填进去xml的值是怎么影响计算的.本问从源代码一步步读下来,解释每一步是如何计算的. power 构成: 动态功耗其实更相关于energy McPAT的power 核心是两类,动态和静态…...

使用组合框QComboBox模拟购物车

1.组合框: QComboBox 组合框:QComboBox 用于存放一些列表项 实例化 //实例化QComboBox* comboBox new QComboBox(this);1.1 代码实现 1.1.1 组合框的基本函数 QComboBox dialog.cpp #include "dialog.h" #include "ui_dialog.h"Dialog::Dialog…...

云服务器十大服务商——云服务器哪家好用

云服务器哪家便宜?2024最新整理你要的都在这!头部云厂商阿里云、腾讯云、华为云、京东云、UCloud等都在降价,阿腾云atengyun.com分享2024年云服务器租用价格给你惊喜! 便宜云服务器阿里云腾讯云华为云 2024年便宜云服务器汇总&…...

SQL DML

# DML—添加数据 1.给指定字段添加数据 INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2...); 2.给全部字段添加数据 INSERT INTO表名VALUES(值1,值2,...); 3.批量添加数据 INSERT INTO表名(字段名1,字段名2,...)VALUES(值1,值2..…...

MySQL--基础篇

这里写目录标题 总览MySQl各个阶段基础篇总览 MySQL概述数据库相关概念查看本机MySQL版本号启停mysql打开windows服务管理windows命令行启停 连接mysql客户端mysql运行逻辑数据模型关系型数据库 总结 SQL总览SQL通用语法SQL语句分类DDL数据库操作表操作查询表创建表结构数据类型…...

[VUE]5-TypeScript

目录 1 TypeScript 介绍2、安装3、快速上手4、TypeScript 常用类型4.1 类型标注的位置4.2 字符串、数字、布尔类型4.3 字面量类型4.4 ⭐interface 类型4.5 class 类型 ​🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,…...

Linux指令(一)

今天来学习Linux的一些基本的指令。 今天要学习的指令有ls,pwd,mkdir,cd,touch,rm等。 指令的格式 在Linux中,指令的语法通常遵循以下格式: command [options] [arguments] command 是要执行…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...