• re模块


    垃圾回收机制

    引用计数:是用来记录值在内存地址被记录的次数
    
    每一次对值地址的引用都会使值得引用计数加 1
    每一次对值地址的释放都会使值的引用计数减 1
    当一个值得引用计数为0时,该值就会被系统的垃圾回收机制回收

    循环引用

    ls1 = [111]
    ls2 = [222]
    ls1.append(ls2)
    ls2.append(ls1)
    print(ls1)    ======>[111, [222, [...]]]
    print(ls2)    ======>[222, [111, [...]]]
    循环导入会致使值得计数永远大于0,会造成内存泄漏

    标记删除

    标记:标记的过程其实就是,遍历所有的GC Roots对象(栈区中的所有内容或者线程都可以作为GC Roots对象),
    然后将所有GC Roots的对象可以直接或间接访问到的对象标记为存活的对象,存放到新的内存空间中
    删除:删除的过程将遍历堆中所有的对象,将之前所有的内容全部清除

    分代回收

    分代回收:(垃圾回收机制的优化机制)   牺牲内存,优化时间
    分代:指的是根据存活时间来为变量划分不同等级(也就是不同的代)
    '''
    新定义的变量,放到新生代这个等级中,假设每隔1分钟扫描新生代一次,如果发现变量依然被引用,
    那么该对象的权重(权重本质就是个整数)加一,当变量的权重大于某个设定得值(假设为3),
    会将它移动到更高一级的青春代,青春代的gc扫描的频率低于新生代(扫描时间间隔更长),
    假设5分钟扫描青春代一次,这样每次gc需要扫描的变量的总个数就变少了,节省了扫描的总时间,
    接下来,青春代中的对象,也会以同样的方式被移动到老年代中。也就是等级(代)越高,被垃圾回收机制扫描的频率越低
    '''
    
    回收:依然是使用引用计数作为回收的依据

    正则:re

    正则:
    带语法的字符串,用来匹配目标字符串得到想要的字符串结果
    重点:1.正则就是字符串 2.正则语法 3.分组 4.Python中re的常用方法
    语法:re.findall(r're',r'目标字符串')
    print(re.findall(r'\a', r'123abc'))  # 用来转义,在正则中\代表匹配

    单个字符串

    匹配任意数字 d == [0-9]
    print(re.findall(r'd',r'qwe123ASD市东南方'))
    结果:['1', '2', '3']
    匹配非任意数字  D ==[^0-9]
    print(re.findall(r'D',r'qwe123ASD市东南方'))
    结果:['q', 'w', 'e', '\', 'A', 'S', 'D', '', '', '', '']
    a|b |c匹配a或b
    # print(re.findall(r'[a-z]|[A-Z]|d',r'qwe123ASD市东南方'))
    结果:['q', 'w', 'e', 'A', 'S', 'D']
    [a-zA-Z0-9]  匹配字母+数字
    print(re.findall(r'[a-zA-Z0-9]',r'qwe123ASD市东南方'))
    结果:['q', 'w', 'e', '1', '2', '3', 'A', 'S', 'D']
    匹配 字母+数字+_  w
    print(re.findall(r'w',r'qwe123ASD_市东南方'))
    结果:['q', 'w', 'e', '1', '2', '3', 'A', 'S', 'D', '_', '', '', '', '']
    匹配 非字母+数字+_   W
    print(re.findall(r'W',r'qwef123
    ASD	_
    市东南方'))
    结果:['\', '\', '\', '\']
    匹配  任意空白符 s
    print(re.findall(r's','qwef123
    ASD	_
    市东南方'))
    结果:['x0c', '
    ', '	', '
    ']
    匹配 非任意空白符 S
    print(re.findall(r'S','qwef123
    ASD	_
    市东南方'))
    结果: ['q', 'w', 'e', '1', '2', '3', 'A', 'S', 'D', '_', '', '', '', '']
    匹配所有单个字符(刨除换行)  .,
    print(re.findall(r'.','qwef123
    ASD	_
    市东南方'))
    结果:['q', 'w', 'e', 'x0c', '1', '2', '3', 'A', 'S', 'D', '	', '_', '
    ', '', '', '', '']

    多个字符

    匹配n到m个,贪婪匹配   {n,m}
    print(re.findall(r'o{1,2}', r'foodfoood'))
    结果:['oo', 'oo', 'o']
    匹配0到n个,贪婪匹配  {*}
    print(re.findall(r'zo*',r'zzozoozooozoo'))
    结果:['z', 'zo', 'zoo', 'zooo', 'zoo']
    匹配1到n个,贪婪匹配  {+}
    print(re.findall(r'zo+',r'zzozoozooozoo'))
    结果:['zo', 'zoo', 'zooo', 'zoo']
    匹配0到1个,贪婪匹配   {?}
    print(re.findall(r'zo?',r'zzozoozooozoo'))
    结果:['z', 'zo', 'zo', 'zo', 'zo']
    匹配1到n个,非贪婪匹配  {+?}
    print(re.findall(r'zo+?',r'zzozoozooozoo'))
    结果:['zo', 'zo', 'zo', 'zo']
    匹配0到n个,非贪婪匹配  {*?}
    print(re.findall(r'zo*?',r'zzozoozooozoo'))
    结果:['z', 'z', 'z', 'z', 'z']

    多行匹配

    re.S:将
    也能被.匹配  re.I:不区分大小写  re.M:结合^ $来使用,完成多行匹配
    print(re.findall(r'^owen.+vv$', 'owen_name_vv
    owen_age_vv
    zero_owen
    owen_oo', re.M))
    结果:['owen_name_vv', 'owen_age_vv']

    分组

    1.从左往右数数 ( 进行编号,自己的分组从1开始,group(0)代表匹配到的目标整体
    2.(?: ... ):取消所属分组,()就是普通(),可以将里面的信息作为整体包裹,但不产生分组
    regexp = re.compile('(?:(?:http://)(.+)/)')  # 生成正则对象
    target = regexp.match('http://www.baidu.com/')
    print(target.group(1))  # www.baidu.com
    结果:www.baidu.com

    拆分

    print(re.split('s', '123 456
    789	000'))
    结果:['123', '456', '789', '000']

    替换

    1.不参与匹配的原样带下 2.参与匹配的都会被替换为指定字符串
    3.在指定字符串值
    um拿到具体分组 4.其他字符串信息都是原样字符串
    print(re.sub('《(?:[a-z]+)(d+)(.{2})', r'\2abc21', '《abc123你好》'))
    结果:2abc你好123》
    print(re.subn('《(?:[a-z]+)(d+)(.{2})', r'\2abc21', '《abc123你好》'))
    print(re.sub('《(?:[a-z]+)(d+)(.{2})', r'\2abc21', '《abc123你好》'))
  • 相关阅读:
    简单的统计指定进程ID(或进程名)CPU、内存脚本
    如何快速破解关注微信公众号才能阅读全文的技术文章 All In One
    2022 软考 All In One
    无任何框架依赖的纯原生 HTML CSS JS 练习项目 All In One
    TypeScript Type Aliases vs Interfaces All In One
    python 中创建函数及传递参数
    python 统计fasta文件每条scalfold的碱基长度
    linux 中 shasum命令
    ubuntu 中如何创建root用户
    ubuntu 中 设置putty登录
  • 原文地址:https://www.cnblogs.com/wangtenghui/p/10725506.html
Copyright © 2020-2023  润新知