re模块
re模块就是让我们能用正则表达式的语法去操作字符串。
正则表达式是一种小型的、高度专业化的编程语言。正则表达式被编译成一系列的字节码,然后由C编写的匹配引擎执行。
关于正则的语法,看我的另一篇博客:https://www.cnblogs.com/kuxingseng95/p/9461424.html
re模块的常用方法:
import re # 1.findall,返回所有满足匹配条件的结果,放在列表里,如果正则中有分组,它只会把匹配到的分组信息放到列表中, print(re.findall('a.', 'adfjsac')) # ['ad', 'ac'] print(re.findall('www\.(baidu).com',"www.baidu.com" )) # ['baidu'] # 如果我们只想要它分组,而不只保存分组信息的话可以在左括号后面加"?:" print(re.findall('www\.(?:baidu).com',"www.baidu.com" )) # ['www.baidu.com'] # 2,search,函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。 print(re.search('a+', 'bbbbbbbb')) # None print(re.search('b+', "bbbbbbbb")) # <_sre.SRE_Match object; span=(0, 8), match='bbbbbbbb'> print(re.search('b+', "bbbbbbbb").group()) # bbbbbbbb # 3,match,同search,不过仅在字符串开始处进行匹配 print(re.match('a', 'abc').group()) # a print(re.match('b', "abc")) # None # 4,split ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割 print(ret) # ['', '', 'cd'] # 5,sub,查找替换,返回替换后的值。第一个参数是正则,第二个参数是要替换为什么,第三个参数是要查找替换的字符串,第四个参数是要替换的个数。 ret = re.sub('\d', 'abc', 'aaa5bbb6', 1) print(ret) # aaaabcbbb6 ret = re.subn('\d', 'abc', 'aa5bbb6') # subn会多返回一个参数,就是匹配到的次数 print(ret) # ('aaabcbbbabc', 2) # 6,compile,写好匹配规则,然后可以使用其他的方法。 obj = re.compile('\d{3}') ret1 = obj.search('abc123eeee') print(ret1.group()) # 123 ret2 = obj.findall('abc123eeee') print(ret2) # ['123'] # 7,迭代器方式查找,当数据量较大的时候适合 ret = re.finditer('\d', 'ds3sy4784a') print(ret) # <callable_iterator object at 0x10195f940> print(next(ret).group()) # 3 print(next(ret).group()) # 4
欢迎转载,但请写明出处,谢谢。