美文网首页
Python语言基础之——re模块和面向对象

Python语言基础之——re模块和面向对象

作者: D低调en | 来源:发表于2020-07-02 20:58 被阅读0次

    1.re模块

    1.re.compile()

    compile(正则表达式) - 编译正则表达式,创建正则表达式对象

    re_obj = compile(r'\d{3}')
    re_obj.fullmatch('234')
    

    2.匹配

    1.fullmatch(正则表达式, 字符串) - 让整个字符串和正则表达式进行匹配
    2.match(正则表达式, 字符串) - 匹配字符串开头
    如果匹配失败,结果是None,如果匹配成功,结果是匹配对象

    re_str = r'(\d\d)-([a-z]{3})'
    print(match(re_str, '34-asd'))
    

    3.匹配对象

    1获取匹配到的字符串
    匹配对象.group() - 获取整个正则表达式匹配到的结果
    print(result.group())
    匹配对象.group(分组号) - 获取正则表达式中指定的分组匹配到的结果(分组号从1开始)
    2获取匹配到的子串的范围
    print(result.span(1))
    3获取原字符串
    print(result.string)
    4查找:

    1)search(正则表达式, 字符串) - 在字符串中查找第一个能和正则表达式匹配的子串。如果找到返回匹配对象,找不到返回None
    2)findall(正则表达式,字符串) - 获取字符串中所有满足正则表达式的子串,返回一个列表,列表中的元素是字符串,正则中如果有分组,只获取分组匹配到的内容
    3)finditer(正则表达式,字符串) - 获取字符串中所有满足正则表达式的子串,返回一个迭代器,迭代器中的元素是匹配对象

    str1 = 'asdafafw2442adafsaff324e2e23re3'
    print(search(r'\d+', str1))
    print(findall(r'\d+[a-z]', str1))
    print(list(finditer(r'\d+[a-z]', str1)))
    

    5.切割
    split(正则表达式, 字符串, 切割次数) - 将字符串中能和正则表达式匹配的子串作为切割点,对字符串进行切割,返回值是列表,列表中的元素是字符串

    6.字符串的替换
    sub(正则表达式, 字符串1, 字符串2, 替换次数) - 将字符串2中满足正则表达式的子串全部替换成字符串1

    2.类和对象

    1.什么是类
    类就是拥有相同属性和相同功能的对象的集合
    对象就是类的实例
    2.定义类(说清楚共同属性和功能是哪些)
    语法:
    class 类名:
    类的说明文档
    类的内容(包含属性和方法)
    说明:
    class - 关键字
    类名 - 程序员自己命名
    要求:标识符,不能是关键字
    规范:驼峰式命名,并且首字母大写,见名知义,不要用系统的函数名类名和模块名
    类的说明文档 - 说清楚类的功能,用三个双引号引起来的说明文字
    类的内容 - 主要包含属性和方法(定义在类中的函数叫方法)
    PEP8命名:
    student_name = 'zhang'
    驼峰式命名
    studentName = '张'
    3.定义对象(创建对象)
    语法:
    类名()
    说明:
    类名:类名对应的类是已经定义好的类的类名

    3.方法

    1.方法(定义在类中的函数)
    类中的方法分三种:对象方法、类方法、静态方法
    1)对象方法
    定义:直接定义在类中的函数就是对象方法
    特点:自带参数self,self在对象调用的时候不用传参,系统会自动将当前对象传给self
    怎么调用:用对象来调用(对象.方法名())
    2)类方法
    定义:定义函数前加装饰器@classmethod
    特点:自带参数cls(cls在通过类调用的时候不用传参)
    怎么调用:用类调用(类.方法名())
    3)静态方法
    定义:在定义函数前加装饰器@staticmethod
    特点:没有默认参数
    怎么调用:用类调用
    4)对象方法、类方法和对象方法怎么选
    如果实现函数功能需要用到函数属性时候用对象方法

    class Dog:
        # eat是对象方法,
        def eat(self):
            print('gou')
        @classmethod
        # count就是一个类方法
        def count(cls):
            print('狗数量是100')
        @staticmethod
        def fun2():
            print('静态方法')
    # 创建对象
    dog1 = Dog()
    # 对象调用
    dog1.eat()
    # 类调用
    Dog.count()
    # 类调用静态方法
    Dog.fun2()
    # 从本质上讲,类型的所有方法都可以用对象和类调用,但是不能这么做
    # 如果用类调用对象方法,self就变成普通参数,没有存在价值
    # 用对象调用类方法时候,cls指向的还是类(不会指向对象) 说白了就是没啥区别就是麻烦了一步
    #
    

    4.init方法

    1.构造方法
    构造方法:函数名和类名是一样的,用来创建对象的方法就是构造方法(是系统自动创建的)
    2.init方法
    init方法又叫初始化方法,用来在创建对象的时候对对象进行初始化操作
    当我们通过类创建对象的时候系统会自动调用init方法来对创建出的对象进行初始化
    调用构造方法创建对象时候,需不需要参数,需要几个,看被调用的int

    class Person:
        def __init__(self, a, b):
            print('初始化方法', a, b)
    # Person()
    
    
    p1 = Person(1, 2)
    

    5.对象属性

    属性:对象属性和类属性
    对象属性:对象属性的值会因为对象不同而不一样
    a.对象属性定义在init方法中
    b.以 self.属性名 = 值 的形式存在

    class Person:
        def __init__(self, name, age, gender):
            self.name = name
            self.age = age
            self.gender = gender
    p1 = Person('张三', 18, '男')
    print(p1.name, p1.age, p1.gender)
    

    相关文章

      网友评论

          本文标题:Python语言基础之——re模块和面向对象

          本文链接:https://www.haomeiwen.com/subject/clddqktx.html