一、正则表达式
正则表达式是用来匹配与查找字符串的,相当于一个格式,从网上爬取数据自然或多或少会用到正则表达式,python的正则表达式要先引入re模块,正则表达式以r为引导
1、正则表达式常用操作符
'/d' 匹配0~9之间的数值
'+' 重复前面一个匹配字符一次或多次
'*' 重复前面一个匹配字符零次或者多次
'?' 重复前面一个匹配字符零次或者一次
'.' 代表任何一个字符,但是没有特别声明时不代表字符“\n”
'[ ]' 字符集,对单个字符给出取值范围 比如[123]表示1、2、3 [a-c] 表示a-c单个字符
2、re库主要功能函数
re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match() 从一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall() 搜索字符串,以列表类型返回全部能匹配的子串
re.sub() 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
例如
3、search方法,进行比对查找
创建模式对象
import re
res=re.compile("AA") #"AA"是正则表达式,
m=res.search("CBA")
k=res.search("CBAA")
print(m)
print(k)
#输出结果为none 表示找不到“AA”这样子的字符串
#输出结果 <re.Match object; span=(2, 4), match='AA'>
表示匹配到了 在[2,4)这个左闭右开的区间里面
没有模式对象
m=re.search("abc","Tabc") #前面的字符串是模板,后面的字符串是被校验的对象
print(m)
输出结果: <re.Match object; span=(1, 4), match='abc'>
4、findall方法
如:
print(re.findall("a","JHIaFRaefa"))
输出结果为:['a', 'a', 'a'] 返回所有符合条件(a)的字符
print(re.findall("[a-z]","awrof358./"))
输出结果为:['a', 'w', 'r', 'o', 'f']
print(re.findall("[a-z]+","awrof358./poiop"))
输出结果为:['awrof', 'poiop']
5、sub方法
如:
print(re.sub("a","A","abcabcabc")) #找到a用A替换,在第三个字符串中查找
输出结果为:AbcAbcAbc