python学习第19天
一.正则函数
1.search 通过正则匹配出第一个对象返回,通过group取出对象中的值
2.match 验证用户输入的内容(了解)
search只要在正则表达式前面加上^就和match一模一样
3.split 切割
strvar = "alex|xboy&wusir-egon"
res = re.split("[|&-]",strvar)
4.sub 替换(正则表达式,替换的字符串,原字符串.[可选的替换次数])
strvar = "alex|xboy&wusir-egon"
res = re.sub("[|&-]","%",strvar,1)
print(res) # alex%xboy&wusir-egon
5.subn 替换与sub的用法一样,区别在于返回值不同,subn返回的是元组
res = re.subn("[|&-]","%",strvar)
print(res) # ('alex%xboy%wusir%egon', 3)
6.finditer 匹配字符串中相应内容,返回迭代器
from collections import Iterator
strvar = "sdfasf234234你好23423"
it = re.finditer(r"\d+",strvar)
print(isinstance(it,Iterator))
for i in it:
print(i.group())
#234234
#23423
7.complie 指定一个统一的匹配规则
正常情况下,正则表达式执行一次,编译一次
如果需要反复使用,会浪费系统资源,比如内存,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']
修饰符
1 . 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>
2 . 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>']
3 . re.S 使 . 匹配包括换行符在内的所有字符
strvar = """give
1112233mefive
"""
pattern = re.compile("(.*?)mefive",flags=re.S)
obj = pattern.search(strvar)
print(obj.group()) # 1112233mefive
"""
give
1112233mefive
"""
二. oop面向对象开发
1.类的定义
class Car:
pass
class Car(): # (推荐)
pass
class Car(object):
pass
2.类的实例化
class Car():
pass
obj = Car()
3.类的基本结构
1)成员属性
2)成员方法
class Car():
# 成员属性
color = "屎黄色的"
# 成员方法
def func():
print("小车会跑")
**注意:
类中的代码可以直接执行,但是严禁使用,不要直接把代码裸露在类中,应该把相应的逻辑放在成员方法中处理
# 反例
class Car():
if 5 == 5:
print(4567)
# 正确的方法
class Car():
def func():
if 5 == 5:
print(4567)
4.类的命名
推荐使用大驼峰命名法
mycar => MyCar
dahuangfeng => DaHuangFeng