01 Re概览
创新互联建站-专业网站定制、快速模板网站建设、高性价比孟连网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式孟连网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖孟连地区。费用合理售后完善,10余年实体公司更值得信赖。
Re模块是python的内置模块,提供了正则表达式在python中的所有用法,默认安装位置在python根目录下的Lib文件夹(如 ..\Python\Python37\Lib)。主要提供了3大类字符串操作方法:
字符查找/匹配
字符替换
字符分割
由于是面向字符串类型的模块,就不得不提到字符串编码类型。re模块中,模式串和搜索串既可以是 Unicode 字符串 (常用str类型) ,也可以是8位字节串 (bytes,2位16进制数字,例如\xe5) , 但要求二者必须是同类型字符串。
02 字符串查找/匹配
预编译:compile
在介绍查找和匹配函数前,首先需要知道re的compile函数,该函数可以将一个模式串编译成正则表达式类型,以便后续快速匹配和复用
import re pattern = re.compile(r'[a-z]{2,5}') type(pattern) #re.Pattern
此例创建了一个正则表达式式对象 (re.pattern) ,命名为pattern,用于匹配2-5位小写字母的模式串。后续在使用其他正则表达式函数时,即可使用pattern进行方法调用。
匹配:match
match函数用于从文本串的起始位置开始匹配,若匹配成功,则返回相应的匹配对象,此时可调用group()方法返回匹配结果,也可用span()方法返回匹配起止下标区间;否则返回None
import re pattern = re.compile(r'[a-z]{2,5}') text1 = 'this is a re test' res = pattern.match(text1) print(res) # if res: print(res.group()) #this print(res.span()) #(0, 4) text2 = '是的, this is a re test' print(pattern.match(text2))#None
match函数还有一个变形函数fullmatch,当且仅当模式串与文本串刚好全部匹配时,返回一个匹配对象,否则返回None
搜索:search
match只提供了从文本串起始位置匹配的结果,如果想从任意位置匹配,则可调用search方法,与match方法类似,当任意位置匹配成功,则立即返回一个匹配对象,也可调用span()方法获取起止区间、调用group方法获得匹配文本串
import re pattern = re.compile(r'\s[a-z]{2}') text1 = 'this is a re test' res = pattern.search(text1) print(res) # if res: print(res.group()) #is print(res.span()) #(4, 7) pattern2 = re.compile(r'\s[a-z]{5}') text2 = '是的,this is a re test' print(pattern2.search(text2))#None
match和search均用于匹配单个结果,唯一区别在于前者是从起始位置开始匹配,而后者从任意位置匹配,匹配成功则返回一个match对象。
全搜索:findall/finditer
几乎是最常用的正则表达式函数,用于寻找所有匹配的结果,例如在爬虫信息提取中,可非常方便地提取所有匹配字段
import re pattern = re.compile(r'\s[a-z]{2,5}') text1 = 'this is a re test' res = pattern.findall(text1) print(res) #[' is', ' re', ' test']
findall返回的是一个列表对象类型,当无匹配对象时,返回一个空列表。为了避免因同时返回大量匹配结果占用过多内存,可以调用finditer函数返回一个迭代器类型,其中每个迭代元素是一个match对象,可继续调用group和span方法获取相应结果
import re pattern = re.compile(r'\s[a-z]{2,5}') text1 = 'this is a re test' res = pattern.finditer(text1) for r in res: print(r.group()) """ is re test """
当匹配模式串较为简单或者仅需单词调用时,上述所有方法也可直接调用re类函数,而无需事先编译。此时各方法的第一个参数为模式串。
import re pattern = re.compile(r'\d{2,5}') text = 'this is re test' re.findall('[a-z]+', text) #['this', 'is', 're', 'test'] 03 字符串替换/分割
替换:sub/subn
当需要对文本串进行条件替换时,可调用re.sub实现 (当然也可先编译后再用调用实例方法) ,相应参数分别为模式串、替换格式、文本串,还可以通过增加缺省参数限定替换次数和匹配模式。通过在模式串进行分组,可实现字符串的格式化替换(类似字符串的format方法),以实现特定任务。
import re text = 'today is 2020-03-05' print(re.sub('-', '', text)) #'today is 20200305' print(re.sub('-', '', text, 1)) #'today is 202003-05' print(re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', text)) #'today is 03/05/2020'
re.sub的一个变形方法是re.subn,区别是返回一个2元素的元组,其中第一个元素为替换结果,第二个为替换次数
import re text = 'today is 2020-03-05' print(re.subn('-', '', text)) #('today is 20200305', 2)
分割:split
还可以调用正则表达式实现字符串的特定分割,相当于.split()方法的一个加强版,实现特定模式的分割,返回一个切割后的结果列表
import re text = 'today is a re test, what do you mind?' print(re.split(',', text)) #['today is a re test', ' what do you mind?'] 04 总结
python中的re模块提供了正则表达式的常用方法,每种方法都包括类方法调用(如re.match)或模式串的实例调用(pattern.match)2种形式
常用的匹配函数:match/fullmatch
常用的搜索函数:search/findall/finditer
常用的替换函数:sub/subn
常用的切割函数:split
还有其他很多方法,但不是很常用,具体可参考官方文档
另外,python还有第三方正则表达式库regex可供选择
到此这篇关于一文秒懂python正则表达式常用函数的文章就介绍到这了,希望大家以后多多支持!
python中len()的用法:
新建一个len()函数的使用py,中文编码声明注释:#coding=gbk,函数:len()作用:返回字符串、列表、字典、元组等长度。语法:len(str)。参数:str:要计算的字符串、列表、字典、元组等。返回值:字符串、列表、字典、元组等元素的长度。
实例:
1、计算字符串的长度。
2、计算列表的元素个数。
3、计算字典的总长度,即键值对总数。
4、计算元组元素个数。
在Python中,要知道一个字符串有多少个字符,以获得字符串的长度,或者一个字符串需要多少字节,可以使用len函数。
函数调用
myFun()
# 函数的参数
# 单个参数
# 场景
# 需要动态的调整函数体中某一个处理信息
# 则可以, 以参数的形式接收到相关数据
# 定义
# def 函数名(参数名称):
# 函数体
# 函数体中, 可以直接以变量的方式使用该参数
# 函数的调用
# 函数名(参数值)
# 形参和实参的概念
# 上述函数定义中, "参数名称"即为形参;
# 在调用函数的时候, 传递的真实数据, 即为实参
# 多个参数
# 场景
# 需要动态的调整函数体中多个处理信息时
# 则可以以 逗号 做分割, 接收多个参数
# 定义
# def 函数名(参数名称1, 参数名称2):
# 函数体
# 函数体中, 可以直接以变量的方式使用所有参数
# 调用
# 方式1
# 函数名(参数1, 参数2, 参数3...)
# 形参和实参一一对应
# 方式2
# 函数名(参数名称1=参数1, 参数名称n = 参数n...)
# 可以指明形参名称
# 称为"关键字参数"
# 不需要严格按照顺序
# 不定长参数
# 场景
# 如果函数体中, 需要处理的数据, 不确定长度
# 则可以以不定长参数的方式接收数据
# 方式1
# 定义
# def 函数名(*args):
# 元组
# 函数体
# 函数体中, 可以直接以元组变量的方式使用该参数
# 使用
# 函数名(参数1, 参数2, 参数3...)
网页题目:python各函数的用法 python中的函数
当前链接:https://www.cdcxhl.com/article2/doihdic.html
成都网站建设公司_创新互联,为您提供做网站、营销型网站建设、搜索引擎优化、企业网站制作、定制开发、静态网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联