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

从零开始的python学习(五)P71+P72+P73+P74

本文章记录观看B站python教程学习笔记和实践感悟,视频链接:【花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p=6&share_source=copy_web&vd_source=404581381724503685cb98601d6706fb

上节课学习了字符串的编码和解码,数据验证的方法,字符串的处理(字符串的拼接操作和字符串的去重操作),本节课学习正则表达式的简介以及相关符号,re模块中match函数的使用,re模块中search函数和findall函数的使用,re模块中sub函数和split函数的使用。

1.正则表达式的简介以及相关符号 

正则表达式,就是特殊的字符序列,它能帮助用户便捷地检查一个字符串是否符合某种模式。

那么正则表示式也有很多类型。

1)元字符

上图只是元字符的部分字符,这里学习部分。

2)限定符

限定符就是用于限定匹配的次数,也就是限定查找到的个数。

3)其他字符

其他类型的正则表达式。

2.re模块中match函数的使用

对于上述的正则表达式需要有专门的函数去用,python中有模块叫re模块,是python中正则表达式的一个操作,而且这是一个内置模块,不需要单独安装。上图中五个函数是本节要学的。下为对代码实现实例:

import re #导入
#这里需要写一个"模式字符串",就是规则,根据前面学习的,\d表示0-9的整数,\是转义符,也就是说这里将“.”变成一个普通的点
pattern='\d\.\d+'#+表示出现的次数,其前面的数字表示重复几次,“\d+"表示出现0-9次,所以这规则意思就是“0-9的数字.出现0-9的字符串可以被匹配”
s='I study Python 3.11 day' #待匹配字符串
#下面执行match函数来查找s里有没有满足“0-9的数字.出现0-9的字符串可以被匹配”的字符串
match=re.match(pattern,s,re.I) #模块re的match方法,这里re.I表示调用re中的ignore也就是忽略大小写
#总结:xx=re.match(模式字符串名,匹配字符串名,其他参数)
print(match)s2='3.11 I study Python day' #第二个待匹配字符串
match2=re.match(pattern,s2,re.I) #模块re的match方法,这里re.I表示调用re中的ignore也就是忽略大小写
print(match2)print('匹配值的起始位置:',match2.start()) #输出匹配值的起始位置
print('匹配值的结束位置:',match2.end())#输出匹配值的终止位置(注意结束位置是不包括的位置)
print('匹配区间的位置元素:',match2.span())#输出开始结束区间位置的元素(注意结束位置是不包括的位置)
print('待匹配的字符串:',match2.string)#输出待匹配的字符串
print('匹配的数据:',match2.group())#输出匹配到的数据

输出结果:

3.re模块中search函数和findall函数的使用

对于前面那个模块罗列的re模块里面的函数,除了第一种的match,还有其他的函数可以使用。match的功能是从字符串的开始位置开始匹配,除非是在第一个就能匹配到,否则的话就会输出None。为了解决这种弊端,我们选择search函数。

search函数式在整个字符串中去查找,找到就行不一定在开始位置(0这个适用范围显然优于match),下为实例:

import re #导入
#这里需要写一个"模式字符串",就是规则,根据前面学习的,\d表示0-9的整数,\是转义符,也就是说这里将“.”变成一个普通的点
pattern='\d\.\d+'#+表示出现的次数,其前面的数字表示重复几次,“\d+"表示出现0-9次,所以这规则意思就是“0-9的数字.出现0-9的字符串可以被匹配”
s='I study Python3.11 every day Python2.7' #待匹配字符串
#下面执行match函数来查找s里有没有满足“0-9的数字.出现0-9的字符串可以被匹配”的字符串
match=re.search(pattern,s) #模块re的search方法,默认忽略大小写
#xx=re.search(模式字符串名,匹配字符串名,其他参数)s2='4.10 Python I study every day' #第二个待匹配字符串
s3='Python I study every day' #第三个待匹配字符串没有数字(输出结果是None)
match2=re.search(pattern,s2) #模块re的search方法,默认忽略大小写
match3=re.search(pattern,s3) #模块re的search方法,默认忽略大小写
print(match)
print(match2)
print(match3)#如果想输出匹配的数据,需要用到match.group()的方法
print(match.group()) #因为search找到的是第一个匹配的数据,因此match返回的是3.11
print(match2.group())#match返回的是4.10
print(match3.group())#没有数据,因此match返回的是None

结果如下:

由于search只能返回第一个满足条件的数据,其他符合条件的都被忽略了。为了保证其他满足条件的也可以输出,使用另一个函数findall。

findall的功能是用于在整个字符串中搜索所有符合正则表达式的数据,结果是一个列表类型。下为实例;

#下为findall的实例
import re #导入
#这里需要写一个"模式字符串",就是规则,根据前面学习的,\d表示0-9的整数,\是转义符,也就是说这里将“.”变成一个普通的点
pattern='\d\.\d+'#+表示出现的次数,其前面的数字表示重复几次,“\d+"表示出现0-9次,所以这规则意思就是“0-9的数字.出现0-9的字符串可以被匹配”
s='I study Python3.11 every day Python2.7' #待匹配字符串
s2='4.10 Python I study every day' #第二个待匹配字符串
s3='Python I study every day' #第三个待匹配字符串没有数字(输出结果是None)
lst=re.findall(pattern,s)#可以看到findall函数将所有符合条件的都列出来了
lst2=re.findall(pattern,s2)
lst3=re.findall(pattern,s3)print(lst)
print(lst2)
print(lst3)

结果如下所示 

4.re模块中sub函数和split函数的使用

上面三个函数都是为了找到满足条件的数据,而下面这两个函数是用于找到并且替换目标数据的函数。sub函数的功能如上所示是“对字符串当中指定的子串进行替换”,可以用于将字符串中的不方便展示的关键字,或爬虫之类的字符替换掉。(这不禁让博主想到某某文学城的“口口文学”以及某黑暗降临的“**”违禁词替换)(审核这有什么不能过的?)

下为具体实例以及解释:

import re
#下为函数sub的实例
#这里需要写一个"模式字符串",这里的规则相当于不可以出现这些字眼,如果出现就需要用其他字符换掉
pattern='黑客|破解|反爬'
s='我想学习python,想破解一些VIP视频,python可以实现无底线反爬吗?'#假如这是我们发表的一段评论,那么这个“匹配字符串”中的违禁词需要替换掉
#语法格式:新的变量名=re.sub(pattern,想要替换的字符串(注意用''框柱哦),匹配字符串名)
new_s=re.sub(pattern,'xxx',s)
print(new_s)

结果如下:(该说不说加上违禁词替换莫名让人浮想联翩)

第二个函数就是split函数,它和字符串的split是一样的分割。这里视频举的例子是打开百度网址搜索ysj,复制那个搜索结果页面的网址

https://www.baidu.com/s?wd=ysj&rsv_spt=1&rsv_iqid=0xedc9cb50000d9767&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=68018901_58_oem_dg&rsv_enter=1&rsv_dl=tb&rsv_sug3=4&rsv_sug1=3&rsv_sug7=100&rsv_sug2=0&rsv_btype=t&inputT=2637&rsv_sug4=3928

这里我们想要让其网址变短一点,观察这一长串,wd是这个搜索框的一个名字,第一个&后面都是这种参数的形式,只保留这些其他删掉,将其作为待匹配字符串:

https://www.baidu.com/s?wd=ysj&rsv_spt=1
#下为函数split的实例
pattern2='[?|&]'#意思就是将待匹配字符串被?或者|拆分
s2='https://www.baidu.com/s?wd=ysj&rsv_spt=1'
lst=re.split(pattern2,s2)
print(lst)

结果如下:

本节完 

相关文章:

从零开始的python学习(五)P71+P72+P73+P74

本文章记录观看B站python教程学习笔记和实践感悟,视频链接:【花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…...

OpenHarmony5.0分布式系统源码实现分析—软总线

一、引言 OpenHarmony 作为一款面向万物互联的操作系统,其分布式软总线(Distributed SoftBus)是实现设备间高效通信和协同的核心技术之一。分布式软总线通过构建一个虚拟的总线网络,使得不同设备能够无缝连接、通信和协同工作。本…...

基于SpringBoot实现旅游酒店平台功能六

一、前言介绍: 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高,旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求,旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上&#xff0…...

代码随想录算法训练营第六十一天 | 108. 冗余连接 109. 冗余连接II

108. 冗余连接 题目链接:KamaCoder 文档讲解:代码随想录 状态:AC Java代码: import java.util.*;class Main {public static int[] father;public static void main(String[] args) {Scanner scan new Scanner(System.in);int n…...

RoboVQA:机器人多模态长范围推理

23 年 11 月来自 Google Deepmind 的论文“RoboVQA: Multimodal Long-Horizon Reasoning for Robotics”。 本文提出一种可扩展、自下而上且本质多样化的数据收集方案,该方案可用于长期和中期的高级推理,与传统的狭窄自上而下的逐步收集相比&#xff0c…...

TCP/IP原理详细解析

前言 TCP/IP是一种面向连接,可靠的传输,传输数据大小无限制的。通常情况下,系统与系统之间的http连接需要三次握手和四次挥手,这个执行过程会产生等待时间。这方面在日常开发时需要注意一下。 TCP/IP 是互联网的核心协议族&…...

Microsof Visual Studio Code 安装教程(中文设置)

VS Code 是一个免费的代码编辑器,可在 macOS、Linux 和 Windows作系统上运行。启动和运行 VS Code 既快速又简单。VS Code(全称 Visual Studio Code)是一款由Microsoft 推出的免费、开源、跨平台的代码编辑器,拥有强大的功能和灵活…...

python爬虫:Android自动化工具Auto.js的详细使用

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Auto.js 简介2. 安装与配置2.1 安装 Auto.js2.2 安装 Python 环境2.3 安装 ADB 工具3. Python 与 Auto.js 结合3.1 通过 ADB 执行 Auto.js 脚本3.2 通过 Python 控制 Auto.js3.3 通过 Python 与 Auto.js 交互4. 常用…...

Unity DOTS从入门到精通之 自定义Authoring类

文章目录 前言安装 DOTS 包什么是Authoring1. 实体组件2. Authoring类 前言 DOTS(面向数据的技术堆栈)是一套由 Unity 提供支持的技术,用于提供高性能游戏开发解决方案,特别适合需要处理大量数据的游戏,例如大型开放世…...

linux 软件安装(上)

一、基础环境准备 1.1、安装VM 1.2、在VM上导入linux iso镜像,装好linux系统 华为centos镜像下载地址 https://mirrors.huaweicloud.com/centos/ https://mirrors.huaweicloud.com/centos/7.9.2009/isos/x86_64/ 网易centos镜像下载地址 htt…...

php虚拟站点提示No input file specified时的问题及权限处理方法

访问站点,提示如下 No input file specified. 可能是文件权限有问题,也可能是“.user.ini”文件路径没有配置对,最简单的办法就是直接将它删除掉,还有就是将它设置正确 #配置成自己服务器上正确的路径 open_basedir/mnt/qiy/te…...

【江协科技STM32】ADC数模转换器-学习笔记

ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁,ADC是一种将连续的模拟信号转换为离散的数字信号的设备或模块12位逐次逼近型…...

QT系列教程(20) Qt 项目视图便捷类

视频连接 https://www.bilibili.com/video/BV1XY41127t3/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 Qt项目视图便捷类 Qt项目视图提供了一些便捷类,包括QListWidget, QTableWidget, QTreeWidget等。我们分别介绍这几个便捷类。 我们先创建一个Qt …...

git worktree的使用

git worktree 是 Git 提供的一个强大功能,允许你在同一个仓库中同时创建多个工作目录,每个目录对应一个分支,从而实现并行开发。以下是 git worktree 的常用命令和使用方法: 1. 创建新的工作目录(Worktree&#xff09…...

Spring Boot+RabbitMQ+Canal 解决数据一致性

目录大纲 一、环境配置1.1 docker-compose.yml 配置1.2 docker-compose 常用命令1.3 镜像服务启动状态 二、MySQL binlog 配置2.1 docker-compose command 配置 binlog2.2 创建canal用户,以及查看是否开启binlog 三、canal 相关配置文件3.1 canal.properties 完整文…...

Java高频面试之集合-08

hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:详细说说CopyOnWriteArrayList CopyOnWriteArrayList 详解 CopyOnWriteArrayList 是 Java 并发包(java.util…...

C#实现高性能异步文件下载器(支持进度显示/断点续传)

一、应用场景分析 异步文件下载器用处很大,当我们需要实现以下功能时可以用的上: 大文件下载(如4K视频/安装包) 避免UI线程阻塞,保证界面流畅响应多任务并行下载 支持同时下载多个文件,提升带宽利用率后台…...

【数据分析】转录组基因表达的KEGG通路富集分析教程

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍差异分析(limma)KEGG富集分析(enrichKEGG)可视化加载R包数据下载导入数据基因差异分析火山图KEGG通路富集分析可视化通路结果另一个案例总结系统信息参考介绍 KEGG富集分析,可…...

【由技及道】API契约的量子纠缠术:响应封装的十一维通信协议(全局的返回结果封装)【人工智障AI2077的开发日志012】

摘要:在API通信的量子混沌中,30种返回格式如同平行宇宙的物理定律相互碰撞。本文构建的十一维通信协议,通过时空锚点(ApiResult)、量子过滤器(ResponseWrapper)和湮灭防护罩(Jackson…...

STM32 ——系统架构

3个被动单元 SRAM 存储程序运行时用到的变量 Flash(内部闪存存储器) 存储下载的程序 程序执行时用到的常量 桥接1和桥接2 AHB到APB的桥(AHBtoAPBx) 桥1 通过APB2总线连接到APB2上的外设。 高速外设,最高72MHz。 桥2 通过…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...