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

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

内存分配函数malloc kmalloc vmalloc

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

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: ​onCreate()​​ ​调用时机​:Activity 首次创建时调用。​…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...