当前位置: 首页 > 后端技术 > Python

大话 Python:python 基础巩固 -- 灵活运用正则表达式完成数据提取与筛选

时间:2023-03-26 12:18:15 Python

说说Python:夯实python基础——灵活运用正则表达式完成数据抽取和过滤记忆比较难记,建议收藏。在python编程中,尤其是爬虫之后的数据过滤、清洗等操作,需要对字符串进行大量的操作,使用正则表达式无疑是最简单的字符串处理操作。1.正则表达式的元字符和汇编形式首先,正则表达式是由元字符一个一个组成的字符串,然后以这个字符串为格式匹配任意字符串,最后生成一个新的数据文本。那么,我们就来看看python中都有哪些这样的元字符。1.匹配任意字符(不包括换行符)2^匹配起始位置,多行模式下匹配每行的开头3$匹配结束位置,多行模式下匹配每行的结尾4*匹配前一个元字符0到多次5+匹配前一个元字符1到多次6?匹配前一个元字符0到1次7{m,n}匹配前一个元字符m到n次8转义字符,后面的字符将失去其作为特殊元字符的意义,例如。只能匹配.,不能再匹配任何字符9[]字符集,可以匹配其中任意一个的字符集10|逻辑表达式or,比如a|b代表可以匹配a或者b11(...)分组,默认是capture,即可以单独取出分组的内容,默认每个分组都有索引,从1开始,索引值按照“(”的顺序确定12(?iLmsux)组中可以设置模式,iLmsux中的每个字符代表一种模式,用法见ModeI13(?:...)Thenon-capturingmodeofthegroupwillbeskippedwhencalculatingtheindex14(?P...)group的命名模式,可以使用index或者name15(?P=name)fetchingthecontentsofthisgroup组的引用方式,可以使用相同的正则表达式来引用之前命名的正则16(?#...)注释不影响正则表达式的其他部分,用法见PatternI17(?=...)序列必须环顾四周,说明该位置的右边可以匹配到正则表达式18(?!...)顺序中的负环视表示右边的si位置的de不能匹配括号中的正则19(?<=...)逆序正查找是指位置左边可以逆序匹配正则20(?参考元字符表,表达式中<.>表示匹配任意字符(不包括换行符)10#<+>表示匹配前一个元字符1次或多次,组合<.+>表示匹配所有字符不包括换行符11pattern=re.compile(".+")12#正则表达式对象调用findall()函数返回列表13printpattern.findall(sc)14#打印返回列表,结果应该是如下列表15['str1','str2','str3']split(pattern,string,maxsplit=0,flags=0)根据正则表达式匹配的数据作为切点,对原始数据进行拆分,得到一个数据返回列表。1#定义原始字符串2sc='''strw1laow3strd2laow4strc3laow'''5#按数字划分6printre.split('d+',sc)7#打印结果8['strw','laownstrd','laownstrc','laow']sub(pattern,repl,string,count=0,flags=0)返回匹配正则表达式的字符串,并替换为指定的字符串。1#importbuilt-inmodulere2importre3#definetheoriginalstring4sc="sumof6and9is[6+9]."5#将[6+9]替换为156printre.sub('[6+9]','15',sc)7#打印结果87和9之和为15.search(pattern,string,flags=0)查找正则表达式的内容。1#导入内置模块re2importre3#定义原始数据4sc='''strw1laow5strd2laow6strc3laow'''7#找到第一个以t开头的字符串8sc_res=re.search('tw+',sc)9#必须使用返回对象的group()函数打印出值,因为search()函数返回对象的转义函数10printsc_res.group()escape(pattern)string,当需要处理的字符串中包含正则表达式中的元字符时,必须对原正则表达式进行转义,否则会匹配不正确。1#导入内置模块re2importre3#定义原始字符串4sc=".+d222"5#转义正则表达式<.+d222>6pattern_str=re.escape(".+d222")7#打印调用正则表达式8printpattern_str9#打印结果10.+d22211#打印匹配字符串12printre.findall(pattern_str,sc)13#打印结果14['.+d222']4.除以上总结常用内置的使用-在三点列出的函数中,还有python内置的正则表达式、分组、环视等的用法,可以帮助我们处理字符串的大部分问题。python中正则表达式的使用非常强大,在后端语言中也有使用。建议您将其加入书签。更多精彩,关注微信公众号【Python集中营】,专注后端编程实践,原创文章每天更新!