1.正则函数
# ### 正则函数
import re
#search 通过正则匹配出第一个对象返回,通过group取出对象中的值
strvar = "1+2 3*4"
obj = re.search("\d+(.*?)\d+",strvar)
#返回匹配到的内容(匹配到一个就返回)
print(obj.group()) #1+2
#把括号里匹配到的内容扔到元组中返回
res = obj.groups()
print(res)
#match 验证用户输入内容(了解)
"""search 只要在正则表达式的前面加上^ 就和match一模一样"""
strvar = "y13566688771"
strvar = "13566688771"
obj = re.search("^\d+",strvar)
print(obj.group()) #13566688771
obj = re.match("\d+",strvar)
print(obj,group())
#split 切割
strvar = "alex|xboy&wusir-egon"
res = re.split("[|&-]",strvar)
print(res) #['alex', 'xboy', 'wusir', 'egon']
strvar = "alex23423411122334xboyww90909045wusir78"
res = re.split("\d+",strvar)
print(res) # ['alex', 'xboyww', 'wusir', ''] #这后面还有个空格
#sub 替换(正则表达式,替换的字符串,原字符串,[可选替换的次数])
strvar = "alex|xboy&wusir-egon"
#strvar.replace("|","%")
#strvar.replace("&","%")
#strvar.replace("-","%")
res = re.sub("[|&-]","%",strvar)
print(res) #alex%xboy%wusir%egon
res = re.sub("[|&-]",strvar,1)
print(res) # alex%xboy&wusir-egon 字符串
#subn 替换与sub用法一样,区别在于返回值不同,返回的是元组
res = re.subn("[|&-]","%",strvar)
print(res) #('alex%xboy%wusir%egon', 3) #返回的第二个参数为修改的次数
res = re.subn("[|&-]","%",strvar,1)
print(res) #('alex%xboy&wusir-egon', 1)
#finditer 匹配字符串中相应的内容 返回迭代器
from collections import Iterator
strvar = "sdfasf234234你好23423"
it = re.finditer(r"\d+",strvar)
print(isinstance(it,Iterator)) #True
"""
lst = list(it)
print(lst)
[
<_sre.SRE_Match object; span=(6, 12), match='234234'>,
<_sre.SRE_Match object; span=(14, 19), match='23423'>
]
234234
23423
"""
for i in it:
print(i.group())
#compile 指定一个统一的匹配规则
'''
正常情况下,正则表达式执行一次,编译一次
如果需要反复使用,会浪费系统资源,比如内存,cpu
compile 可以使正则编译一次,终身受益,无需反复编译
'''
strvar = "sdfasf234234你好23423"
pattern = re.compile("\d+")
print(pattern) ## re.compile('\\d+')
obj = pattern.search(strvar)
print(obj.group()) # # 234234
lst = pattern.findall(strvar)
print(lst) #['234234', '23423']
#修饰符
#re.I 使匹配对大小写不敏感
strvar = "<h1>123<H1>"
pattern = re.compile("<h1>(.*?)</h1>",flags=re.I)
obj = pattern.search(strvar)
print(obj)
print(obj.group()) #<h1>123</H1>
# re.M 使每一行都能够单独匹配(多行匹配) 影响 ^ 和 $
strvar = """<h1>123</H1>
<p>123</p>
<div>123</div>
"""
pattern = re.compile("^<.*?>(?:/*?)<.*?>$",flags=re.M)
print(pattern.findall(strvar)) #['<h1>123</H1>', '<p>123</p>', '<div>123</div>']
#re.S 使 . 匹配包括换行在内的所有字符
strvar = """give
1112233mefive
"""
pattern = re.compile("(.*?)mefive",flags=re.S)
obj = pattern.search(strvar)
print(obj.group())
"""
give
1112233mefive
"""
2.面向对象初始
# ###oop 面向对象程序开发
#(1) 类的定义
class Car:
pass
class Car(): #推荐
pass
class Car(object):
pass
#(2) 类的实例化
class Car():
pass
obj = Car() #类名加() => 实例化一个对象
#(3)类的基本结构
'''
类中只有2种成员
(1)成员属性
(2)成员方法
'''
class Car():
#成员属性
color = "屎黄色的"
#成员方法
def func(self):
print("小车会跑")
#反例
'''
类中的代码可以直接指向,但是严禁使用,不要直接把代码裸露在类中
应该把相应的逻辑放在成员方法当中处理
'''
class Car():
if r == 5:
print(4567)
#正确方法
class Car():
def func(self):
if 5 == 5:
print(4567)
#(4) 类的命名
'''
类的命名推荐使用大驼峰命名法
mycar => MyCar
dahuangfeng => DaHuangFeng
'''
#面向对象总结:
面向过程:
(1)优点:效率高,执行速度快
(2)缺点:维护性差,移植性差,表达不出一类的语意
面向对象:
(1)优点:可读性,可移植性,可维护性高
(2)缺点:执行效率稍慢
-------------------------------------------
个性签名:代码过万,键盘敲烂!!!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!