re模块和面向对象
一、re模块
import re
re_obj = re.compile('\d{3}')
re_obj.fullmatch('456')
re_obj.search('dsjfkad45fdsa789')
result = re.fullmatch(r'(\d{3})-([a-z]{3})', '123-dsa')
print(result)
print(result.group())
print(result.group(2))
print(result.span())
print(result.span(2))
print(result.string)
re_str = r'\d{3}'
print(re.fullmatch(re_str, '123'))
print(re.match(re_str, '188dsaasa456sa46sa'))
print(re.search(re_str, 'dsafnvjc5664fnds'))
print(re.findall(r'\d{3}', 'dsa456xzc213fdfds9988'))
result = re.finditer(r'(\d{2})-([a-z]{2})', 'd大发23-sa竞赛89-ds几艘爱79-sd')
for x in result:
print(x.group(), x.group(1), x.group(2))
re_str1 = '复健科455dsan79dnakn89'
result = re.sub(r'\d+', '=', re_str1)
print(result)
sentence = '你猜下咯没猜错a但是可能b大玫琳凯是帽搭配上c都能开饭店'
result = re.split(r'[abc]', sentence)
print(result)
二、认识类和对象
"""
语法:
class 类名:
类的说明文档
类的内容
说明:
class --关键字,固定写法
类名 --标识符,不能是关键字(自己命名)
规范:驼峰式命名,首字母大写;见名知义;不使用系统提供的名字
类的说明文档 --三个双引号开头和结尾的注释
类的内容 --主要包括类中的属性和方法
属性:类属性(字段)和对象属性
方法:对象/实例方法、类方法和静态方法
注:方法就是定义在类中的函数
"""
class Student:
pass
"""
语法:
对象名 = 类()
"""
stu1 = Student()
print(stu1)
stu2 = Student()
print(stu2)
三、对象方法
"""
定义:直接定义在类中的函数就是对象方法
调用:通过对象调用 --对象.方法名()
特点:自带参数self,在调用时不用传参
s:<__main__.Person object at 0x0000023343043FD0>
self:<__main__.Person object at 0x0000023343043FD0>
系统谁去调用,传的参数就是谁(s去调用,将s的参数传给self)
"""
class Person:
def eat(self):
print(f'self:{self}')
print('吃饭')
def sleep(self):
print('睡觉')
s = Person()
print(f's:{s}')
s.eat()
四、初始化方法和构造函数
class Dog:
def __init__(self):
print('init被调用')
dog1 = Dog()
class Cat:
def __init__(self, name, age):
print('猫的init', name, age)
c1 = Cat('小白', 18)
c2 = Cat(name='小松', age=25)
五、属性
"""
怎么定义:直接定义在类中的变量就是类属性
怎么使用:类.类属性名
什么时候用:属性值不会因为对象的不同而不一样(就是对象不同,但是属性值是不变的)
"""
class Person:
a = 100
print(Person.a)
Person.a = 200
print(Person.a * 2)
"""
怎么定义:定义在__init__方法里面(‘self.属性名=值’的形式定义)
怎么使用:通过对象使用(对象.属性)
什么时候用:属性值会因为对象不同而不一样,就定义成对象属性
"""
class Person:
def __init__(self):
self.name = '小明'
self.age = 18
self.gender = '男'
p1 = Person()
print(p1.name, p1.age, p1.gender)
class Student:
def __init__(self, name1, tel1='110'):
self.name = name1
self.study_id = '000'
self.tel = tel1
stu1 = Student('小明')
print(stu1.name)
class Rectangle:
def __init__(self, long1, wide1):
self.long = long1
self.wide = wide1
def area(self):
print(f'面积:{self.long * self.wide}')
def perimeter(self):
print(f'周长:{(self.long + self.wide) * 2}')
r1 = Rectangle(2, 4)
r1.area()
r1.perimeter()