2020-12-13

异常概念:在生活中,使用计算机的某个应用软件时,由于某种错误,可能会引发异常,如图:
在这里插入图片描述
在程序中,当python检测到一个错误时,解释器就会指出当前流程已无法继续执行下去,这时就出现了异常。
在python程序中,如果出现异常,而异常对象并未被捕获或处理:程序就会用自动回溯,返回一种错误信息,并终止执行
异常类
python为了区分不同的异常,其中内置了许多异常类,常见的异常类如表所示:
在这里插入图片描述
在这里插入图片描述
在表中,BaseException是异类的顶级类,但用户定义的类不能直接继承这个类,而是要继承Exception。Exception类是与应用相关异常的顶层基类,除了系统退出事件类(systemexit,keyboardlnterrupt和generatorexit)之外,几乎所有用户定义的类都应该继承自这个类,而不是baserxception类。
捕获与处理异常

捕获与处理异常
try-except语句
触发异常
raise语句
触发异常有两种情况:一种是程序执行中因为错误自动触发异常,另一种是显示地使用raise或assert语句手动触发异常。python捕获与处理这两种异常的方式是相同的。
assert语句
assert语句(又称断言)是有条件的触发异常

python正则表达式
正则表达式是字符串处理的有力工具,比字符串自身提供的方法提供了更强大的处理功能。
例如判断一个字符串是否是合法的Email地址,可以通过构造一个规则(正则表达式),去判断字符串是否能够匹配。
正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。
正则表达式由元字符及其不同组合来构成,通过巧妙地构造正则表达式可以匹配任意字符串,并完成查找、替换、分隔等复杂的字符串处理任务。
元字符:在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回None。
re.match(pattern, string, flags=0)
在这里插入图片描述
flags
在这里插入图片描述
匹配成功re.match方法返回一个匹配的对象
使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
在这里插入图片描述
re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配
re.search(pattern, string, flags=0)
在这里插入图片描述
re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None
而re.search匹配整个字符串,直到找到一个匹配。
compile 函数
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
re.compile(pattern[, flags])
findall
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
findall(string[, pos[, endpos]])
string 待匹配的字符串。
pos 可选参数,指定字符串的起始位置,默认为 0。
endpos 可选参数,指定字符串的结束位置,默认为字符串的长度
re.finditer
在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回
re.finditer(pattern, string, flags=0)
re.split
split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:
在这里插入图片描述
re.sub
sub(pattern, repl, string, count=0, flags=0)
替换函数,将正则表达式 pattern 匹配到的字符串替换为 repl 指定的字符串, 参数 count 用于指定最大替换次数
在这里插入图片描述
正则表达式集锦
最简单的正则表达式是普通字符串,可以匹配自身
‘[pjc]ython’可以匹配’python’、‘jython’、‘cython’
'[a-zA-Z0-9]'可以匹配一个任意大小写字母或数字
'[^abc]‘可以一个匹配任意除’a’、‘b’、‘c’之外的字符
‘python|perl’或’p(ython|erl)‘都可以匹配’python’或’perl’
子模式后面加上问号表示可选。r’(http://)?(www.)?python.org’只能匹配’http://www.python.org’、‘http://python.org’、‘www.python.org’和’python.org’
‘^http’只能匹配所有以’http’开头的字符串
(pattern):允许模式重复0次或多次
(pattern)+:允许模式重复1次或多次
(pattern){m,n}:允许模式重复m~n次
‘(a|b)c’:匹配多个(包含0个)a或b,后面紧跟一个字母c。
‘ab{1,}’:等价于’ab+’,匹配以字母a开头后面带1个至多个字母b的字符串。
1{1}([a-zA-Z0-9._]){4,19}KaTeX parse error: Undefined control sequence: \w at position 50: …_”、“.”的字符串。 '^(\̲w̲){6,20}’:匹配长度为6-20的字符串,可以包含字母、数字、下划线。
‘^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}KaTeX parse error: Undefined control sequence: \d at position 31: …P地址。 '^(13[4-9]\̲d̲{8})|(15[01289]…’:检查给定字符串是否为移动手机号码。
2+KaTeX parse error: Undefined control sequence: \w at position 26: …否只包含英文字母大小写。 '^\̲w̲+@(\w+\.)+\w+’:检查给定字符串是否为合法电子邮件地址。
r’(\w)(?!.
\1)’:查找字符串中每个字符的最后一次出现。
r’(\w)(?=.
\1)’:查找字符串中所有重复出现的字符。
使用时要注意的是,正则表达式只是进行形式上的检查,并不保证内容一定正确。
正则表达式对象的match方法和search方法匹配成功后返回match对象。match对象的主要方法有:
group():返回匹配的一个或多个子模式内容
groups():返回一个包含匹配的所有子模式内容的元组
groupdict():返回包含匹配的所有命名子模式内容的字典
start():返回指定子模式内容的起始位置
end():返回指定子模式内容的结束位置的前一个位置
span():返回一个包含指定子模式内容起始位置和结束位置前一个位置的元组。


  1. a-zA-Z ↩︎

  2. a-zA-Z ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值