python 16 days
python 16 days
常用模块
正则:
re模块是一个和正则表达式相关的模块
正则表达式和python没关系
正则表达式--->str:
1,监测字符串是否符合要求
2,从大段的文字中找到符合要求的内容
number = input('你的名字')
if number.isdigit() and len(number)==11 \
and number.startswith('13'):
print('是合法的手机号')
else:
pass
你的名字
转换
'\\n' --> '\n'
'\\\\n' --> '\\n'
r'\\n'
r'\n'
re模块
三中最基础的查找方法
findall search match
findall查找:
pattern正则表达式, string待匹配的字符串, flags=0
ret = re.findall('\d+','eva123egon4yuan567') print(ret) # ['123', '4', '567']
['123', '4', '567']
search查找:
ret2 = re.search('\d+','eva123egon4yuan567') print(ret2) # 不会直接返回结果,而是返回第一个匹配的变量 print(ret2.group()) # 使用这个变量.group()得到返回的结果 ret3 = re.search('\d+','eva')
<_sre.SRE_Match object; span=(3, 6), match='123'> 123
match查找:
ret4 = re.match('\d+','321eva123egon4yuan567') print(ret4) # 不会直接返回结果,而是在正则表达式的开始加上一个^ print(ret4.group()) # 不会直接返回结果,而是返回第一个匹配的变量
<_sre.SRE_Match object; span=(0, 3), match='321'> 321
1,'alex27egon18yuan40',需求,把这串代码里的名字用正则表达式出来。
ret = re.split('\d+','alex27egon18yuan40') print(ret)
['alex', 'egon', 'yuan', '']
节省时间:
obj = re.compile('\d{3}') #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字 # # 正则表达式 --> python可以理解的 -->执行 ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串 print(ret.group()) #结果 : 123
123
obj = re.compile('\d{3}') #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字 ret = obj.findall('abc123eeee456as12') #正则表达式对象调用search,参数为待匹配的字符串 print(ret)
['123', '456']
import re:节省时间
import re # 节省空间 ret = re.finditer('\d', 'ds3sy4784a') #finditer返回一个存放匹配结果的迭代器 print(ret) # <callable_iterator object at 0x10195f940> print(next(ret).group()) #查看第一个结果 print(next(ret).group()) #查看第二个结果 print([i.group() for i in ret]) #查看剩余的左右结果
3 4 ['7', '8', '4']
findall的用法:
ret = re.findall('www\.(baidu|oldboy)\.com', 'www.baidu.com') print(ret) # findall默认只显示分组中的
['baidu']
提取网站的用法:
ret = re.findall('www\.(?:baidu|oldboy)\.com', 'www.baidu.com') print(ret)
['www.baidu.com']
ret=re.split("(\d+)","eva3egon4yuan") print(ret) #结果 : ['eva', 'egon', 'yuan']
['eva', '3', 'egon', '4', 'yuan']
import re ret = re.search("<(?P<tag>\w+)>(\w+)</(?P=tag)>","<h1>hello</h1>") print(ret) print(ret.group()) print(ret.group('tag'))
<_sre.SRE_Match object; span=(0, 14), match='<h1>hello</h1>'> <h1>hello</h1> h1
ret = re.search('(?P<flag>.+).*(?P=flag)','***abc***') print(ret.group()) ret = re.search('(.+).*\\1','-123-') print(ret.group())
***abc*** -123-
exp = "1-2*(60+(-40.35/5)-(-4*3))" ret = re.findall('\d+\.\d+|(\d+)',exp) print(ret) ret.remove('') print(ret)
['1', '2', '60', '', '5', '4', '3'] ['1', '2', '60', '5', '4', '3']
爬虫练习: