python re模块
# re模块 findall(模式,字符串,flags= 0(默认0) # 返回字符串中所有不重叠匹配的列表,返回所有匹配的内容 # 如果模式中存在一个或多个捕获组,则返回 # 组的列表;如果是模式,这将是一个元组列表 # 有多个组 # 注意 : findall的分组用法 # findall(pattern, string, flags=0): #返回字符串中所有不重叠匹配的列表 # import re # ret = re.findall("\d","12333dddkjkkkk122") # 模式 字符串 # # print(ret) # ['1', '2', '3', '3', '3', '1', '2', '2'] 返回所有匹配上内容是一个列表 # # ret1 = re.findall("\w","weeii2222") # # print(ret1) # ['w', 'e', 'e', 'i', 'i', '2', '2', '2', '2'] # search (模式,字符串 ,默认0) #def search(pattern, string, flags=0): # 扫描字符串寻找匹配的模式,返回 # 匹配对象,如果没有找到匹配,则为None。 # import re # ret = re.search("\d","ww222sssd") # print(ret) # 匹配的返回内容 <re.Match object; span=(0, 1), match='2'> # 返回匹配对象 # print(ret.group()) # 返回 2 # 返回的对象通过group来获取匹配到的第一个结果 # # match(pattern, string, flags=0): # 跟search的区别是只匹配开头第一个符合的字符,否者返回None # 尝试在字符串开头应用模式,返回 # 匹配对象,如果没有找到匹配,则为None # import re # ret = re.match("\d","233dddfffff44") # print(ret) # <re.Match object; span=(0, 1), match='2'> 返回一个匹配对象 # print(ret.group()) # 2 # ret1 = re.match("\d","a^222") # print(ret1) # 替换sub (pattern, repl, string, count=0, flags=0) #sub( 模式, 替换, 字符串, 替换次数, 默认0) #返回替换最左边所获得的字符串 # 不重叠的模式在字符串中的出现 # 替换repl。repl可以是字符串,也可以是可调用的; # 如果一个字符串,反斜杠转义将被处理。如果它是 # 一个可调用的,它传递了Match对象并且必须返回 # 要使用的替换字符串 # import re # ret = re.sub("\d","H","weee33") # 默认全部替换 # print(ret) # weeeHH 返回内容 # subn(pattern, repl, string, count=0, flags=0): # 返回一个包含两个元组(new_string, number)。 # new_string是替换最左边的字符串 # 源中模式的不重叠出现 # 字符串由替换repl。数字是 # 替换。repl可以是字符串或a # 可调用的;如果处理一个字符串,反斜杠转义。 # 如果它是可调用的,它将传递Match对象并必须 # 返回要使用的替换字符串。 # ret1 = re.subn("\d","H","1dfff333") # print(ret1) # 返回替换内容和次数,也可以设置替换次数 # ret2 = re.subn("\d","H","123ddgf33",1) # 设置替换一次 # print(ret2) # 返回替换内容和次数 # split(pattern, string, maxsplit=0, flags=0) 切割 #通过模式的出现来分割源字符串, # 返回包含结果子字符串的列表。如果 # 捕获括号在模式中使用,然后是所有文本 # 模式中的组也作为结果的一部分返回 # 列表。如果maxsplit不为零,那么在大多数情况下, # 字符串的其余部分作为最终元素返回 # 的列表。 # import re # ret = re.split("\d","12ssdd45fff") # print(ret) # ['', '', 'ssdd', '', 'fff'] # 切割内容是列表,空白字符 # # ret = re.split("(\d)","12ssdd45fff") # 如果切割用括号,泽返回切割的内容 # print(ret) # ['', '1', '', '2', 'ssdd', '4', '', '5', 'fff'] 返回了切割的类容 # # 进阶方法 - 爬虫\自动化开发 # complit(pattern, flags=0) # 编译正则表达式模式,返回模式对象 # (预编译)节约时间 只有多次使用某一个相同的正则表达式的时候,这个complit才会帮助提高效率 # import re # ret = re.compile("\d") # ret1 = ret.search("22rffff") # print(ret1) # ret2 = ret.findall("22wwww") # print(ret2) #finditer(pattern, string, flags=0) 空间效率 #字符串。对于每个匹配,迭代器返回一个匹配对象 #结果中包含空匹配项 import re ret = re.finditer("\d","23dddd33") print(ret) # <callable_iterator object at 0x00000000006D1BE0> 迭代器 for r in ret: #print(r) print(r.group())