资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Python知识点总结1 正则表达式1.1 Python中常用正则表达式处理函数在Python中使用正则表达式处理函数要import re 模块1.1.1 re.matchre.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词。 importre text=JGoodisahandsomeboy,heiscool,clever,andsoon. m=re.match(r(w+)s,text) ifm: printm.group(0),n,m.group(1) else: printnotmatch输出:JGood JGoodre.match的函数原型为:re.match(pattern, string, flags)第一个参数是正则表达式,这里为(w+)s,如果匹配成功,则返回一个Match,否则返回一个None;第二个参数表示要匹配的字符串;第三个参数是标致位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。1.1.2 re.searchre.search函数会在字符串内查找模式匹配,直到找到第一个匹配然后返回,如果字符串没有匹配,则返回None。 importre text=JGoodisahandsomeboy,heiscool,clever,andsoon. m=re.search(rshan(ds)omes,text) ifm: printm.group(0),m.group(1) else: printnotsearch输出:handsome dsre.search的函数原型为: re.search(pattern, string, flags),每个参数的含意与re.match一样。re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。1.1.3 re.subre.sub用于替换字符串中的匹配项。下面一个例子将字符串中的空格 替换成 - : importre text=JGoodisahandsomeboy,heiscool,clever,andsoon. printre.sub(rs+,-,text)输出:JGood_is_a_handsome_boy,_he_is_cool,_clever,_and_so_on. re.sub的函数原型为:re.sub(pattern, repl, string, count),其中第二个参数是替换后的字符串;本例中为-,第四个参数指替换个数。默认为0,表示每个匹配项都替换。re.sub还允许使用函数对匹配项的替换进行复杂的处理。如:re.sub(rs, lambda m: + m.group(0) + , text, 0);将字符串中的空格 替换为 。1.1.4 re.splitre.split函数用来分割字符串,下面例子将字符串按空格分割成单词列表importre text=JGoodisahandsomeboy,heiscool,clever,andsoon. printre.split(rs+,text)输出:JGood, is, a, handsome, boy, he, is, cool, clever, and, so, on.re.split的函数原型为:re.split(pattern,string,count),其中第一个参数为政则表达式,第二个参数为要匹配的字符串,第三个参数指替换个数。默认为0,表示每个匹配项都替换。1.1.5 re.findallre.findall可以获取字符串中所有匹配的字符串。如:re.findall(rw*oow*, text);获取字符串中,包含oo的所有单词。re.findall的输出是个list类型importre text=JGoodisahandsomeboy,heiscool,clever,andsoon. printre.findall(rw*oow*, text)输出:JGood, cool1.1.6 pile可以把正则表达式编译成一个正则表达式对象。可以把那些经常使用的正则表达式编译成正则表达式对象,这样可以提高一定的效率。下面是一个正则表达式对象的一个例子:importre text=JGoodisahandsomeboy,heiscool,clever,andsoon. regex=pile(rw*oow*) printregex.findall(text)#查找所有包含oo的单词 printregex.sub(lambdam:+m.group(0)+,text)#将字符串中含有oo的单词用括起来。1.1.7 re.escape把string中,除了字母和数字以外的字符,都加上反斜杆。例子:importre str = #:JGoodtext=#:JGoodisahandsomeboy,heiscool,clever,andsoon. patt = re.escape(str)res = re.search(patt,text)print pattprint res.group()输出:#:JGood #:JGood1.2 常用匹配1.2.1 匹配对象在match()或search()被成功调用之后所返回的结果。匹配对象有两个主要方法:group() 和 groups()。group()方法返回所有匹配对象或是根据要求返回某个特定子组,group()=group(0);groups()它返回所有子组的元组。如果正则表达式中没有子组的话, groups() 将返回一个空元组。 具体应用看下面例子1.2.2 圆括号()一对圆括号()和正则表达式一起使用时可以实现以下任意一个(或两个)功能:1、对正则表达式进行分组2、匹配子组例子: m = re.match(www)-(ddd), abc-123)m.group() # entire match 所有匹配部分abc-123m.group(1) # subgroup 1 匹配的子组1abcm.group(2) # subgroup 2 匹配的子组2123m.groups() # all subgroups 所有匹配子组(abc, 123)m = re.match(ab), ab) # one subgroup #一个子组m.group() # entire match #所有匹配abm.group(1) # subgroup 1 #匹配的子组1abm.groups() # all subgroups #所有匹配子组 (ab,)m = re.match(a)(b), ab) # two subgroups #两个子组m.group() # entire matchabm.group(1) # subgroup 1 匹配的子组1am.group(2) # subgroup 2 匹配的子组2bm.groups() # all subgroups 所有匹配子组的元组(a, b)m = re.match(a(b), ab) # two subgroups #两个子组m.group() # entire match #所有匹配部分abm.group(1) # subgroup 1 #匹配的子组1abm.group(2) # subgroup 2 #匹配的子组2bm.groups() # all subgroups #所有匹配的子组的元组(ab, b)text=JGoodisahandsomeboy,heiscool,clever,andsoon. m=re.search(rshan(ds)omes,text) printm.group(0),m.group(1)输出:handsome ds例子:m = re.findall(w+ar, carry the barcardi to the car)n = re.findall(w+(ar), carry the barcardi to the car)print m,n输出:car, barcar, car ar, ar, ar2 检测与处理异常异常可以通过try语句来检测,任何在try语句块里的代码都会被检测。2.1 Try-except和try-finallytry 语句有两种主要形式:try-except 和 try-finally。一个try 语句可以对应一个或多个except 子句,但只能对应一个finally 子句,或是一个 try-except-finally 复合语句。可以使用try-except语句检测和处理异常,通常的语句放在try块中,错误处理语句放在except块中,也可以添加一个可选的 else 子句处理没有探测到异常的时执行的代码;而 try-finally 只允许检测异常并做一些必要的清除工作(无论发生错误与否),没有任何异常处理设施。异常捕获模式,try语句子句形式表:except: 捕获所有异常except name: 只捕获特定的异常except name,value: 捕获异常和它的附加数据except (name1,name2): 捕获任何列出的异常else: 如果没有异常finally: 总是执行2.2 raise 引发异常可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类。raise语句的形式很简单,raise后面跟着要引发的异常。raise #手工地引发异常raise , #传递一个附加的数据什么是异常名(name)呢?它也许是内置作用域内的内置异常(如IndexError),或者是你程序中的任意字符串对象,但它们是Error或Excepti
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号