configparser模块-正则表达式-re模块

configparser模块,正则表达式,re模块
section 把...分段,截面,部分,章节,地区
option 期权,选择权,选择
作用:用于生成和修改常见配置文档,当前模块的名称在python 3.x 版本中变更为configparser。
调用方法:import configparser
    1.configparser.ConfigParser():配置文件
        import configparser  # 配置文件
        config = configparser.ConfigParser()
        #生成configparser配置文件 ,字典的形式
        #第一种写法
        config["DEFAULT"] = {'ServerAliveInterval': '45',
                             'Compression': 'yes',
                             'CompressionLevel': '9'}
        #第二种写法
        config['bitbucket.org'] = {}
        config['bitbucket.org']['User'] = 'hg'
        #第三种写法
        config['topsecret.server.com'] = {}
        topsecret = config['topsecret.server.com']
        topsecret['Host Port'] = '50022'  # mutates the parser
        topsecret['ForwardX11'] = 'no'  # same here

        config['DEFAULT']['ForwardX11'] = 'yes'
        #写入后缀为.ini的文件
        with open('example.ini', 'w') as configfile:
            config.write(configfile)
    2.控制台打印结果
        import configparser  # 配置文件
        config = configparser.ConfigParser()
        config.read('example.ini')
        # print(config.sections())#除default,取其余所有块
        # print(config.defaults())#特殊,只能这样取default块
        # print(config['bitbucket.org']['User'])
        for key in config['bitbucket.org']:
            print(key)#DEFAULT默认会跟着所有块一起走
    3.增删改查
        (1)删除:config.remove_section('')(注:此操作会产生覆盖,不是修改)
        删除块: config.remove_section('topsecret.server.com')
            import configparser  # 配置文件
            config = configparser.ConfigParser()
            config.read('example.ini')
            config.remove_section('topsecret.server.com')
            config.write(open('example.ini','w'))#覆盖(注:已有文件是固定模式不可修改,所以把文件重写覆盖)
            print(config.has_section('topsecret.server.com'))#检查'topsecret.server.com'块是否被删除,被删除打印False,否则打印True
        删除块下的键值对:config.remove_option('bitbucket.org','user')
            import configparser  # 配置文件
            config = configparser.ConfigParser()
            config.read('example.ini')
            config.remove_option('bitbucket.org','user')
            config.write(open('example.ini','w'))
        (2)修改:config.set('bitbucket.org','user','eric')#键值对
            import configparser  # 配置文件
            config = configparser.ConfigParser()
            config.read('example.ini')
            config.set('bitbucket.org','user','eric')
            config.write(open('example.ini','w'))#覆盖(注:已有文件是固定模式不可修改,所以把文件重写覆盖)
正则表达式
pattern 规则
注:逗号本身就是一个普通字符
flags 标志位(修改规则)
    1.正则表达式式用来 匹配 字符串的(普通字符,元字符)
    2.匹配:
        s='hellow word'
        print(s.find('llo'))
        ret=s.replace('ll','xx')
        print(ret)
        print(s.split('w'))
        #string提供的方法式完全匹配
    3.引入正则表达式:模糊匹配
        import re
        rets=re.findall('\w','hello word')
        print(rets)#['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'd']
    4.正则表达式是c编写的一个引擎,正则表达式其实是一种语言
    5.正则表达式拥有自己的元字符
    6.元字符:.  ^  $  *  +  ?  {}  []  |  ()  \ (11个元字符)
    .通配符 用法:点只能匹配一位字符但点不能代指特殊的换行符
        import re
        ret=re.findall('w..l','hello world')
        print(ret)
    ^尖角符 用法:只从开始匹配,有就打印,没有就不打印
        import re
        ret=re.findall('^h...o','hasdfhhello')
        print(ret)
    $符 用法:从结尾开始匹配,有就打印,没有就不打印
        import re
        ret=re.findall('e..c$','asdfgaSfderic')
        print(ret)
    *符(范围[0,正无穷]) 作用:重复匹配(有0个)
        import re
        ret=re.findall('e.*ic','aSfderadsdfghjfasicli')# *把.多次重复
        print(ret)
        rets=re.findall('er*','aSfdeeeeradsdfghjfasicli')
        print(rets)#['e', 'e', 'e', 'er']
    +符(范围[1,正无穷]) 作用:(至少有一个)
        import re
        ret=re.findall('ab+','abbbSfdeeeeradsdfghjfasicli')#匹配a到无穷个b,但没有b
        print(ret)#['abbb']
        rets=re.findall('a+b','aaaaabbSfdeeeeradsdbfghjfasicliab')#匹配无穷个a到b,至少有一个ab
        print(rets)#['aaaaab','ab']
    ?符(范围[0,1]) 作用:只能匹配0到一次
        import re
        ret=re.findall('a?b','abbbSfdeeeeradsdfbghjfasicli')
        print(ret)
    {}符(范围任意)作用:任意规定匹配范围 1到正无穷{1,}等价于{1,正无穷}
        import re
        ret=re.findall('a{5}b','aaaaaabbbsdfbghjfasicli')#至少要有5个a
        print(ret)
        rets=re.findall('a{1,5}b','aaaaabbb')#默认最大位,数贪婪匹配
        print(rets)
    结论:*等于{0,正无穷}  +等价于{1,正无穷}  ?等价于{0,1}   d都推荐使用前者
    字符集
    []符 作用(1):多选一['','']
        import re
        ret=re.findall('a[c,d]x','acx')#二选一c或d(或关系)
        print(ret)
        rets=re.findall('a[c,d,e]x','aex')#三选一
        print(rets)
         作用(2):范围[a-z1-9]
        import re
        ret=re.findall('[a-z]','acx')#匹配范围
        print(ret)

        import re
        ret=re.findall('[1-9a-zA-Z]','12asAS')#默认会遍历所有
        print(ret)
        rets=re.findall('[1-9,a-z,A-Z]','45exQW')#默认会遍历所有
        print(rets)
         作用(3):取消元字符的特殊功能
        import re
        ret=re.findall('[w,*]','*acx')#取消元字符的特殊功能
        print(ret)#['*']
    注:有三个符号例外(\ ^ -),[]不起作用
        []加^ 作用:取反的意思[^]
        import re
        ret=re.findall('[^2]','12asAS')
        print(ret)#['1', 'a', 's', 'A', 'S']
        rets=re.findall('[^4,5]','45exQW')#非(1,2)一组
        print(rets)
    \符 作用(1):反斜杠后面跟元字符去除特殊功能
            ret = re.search('s\.','s.gz').group()
            print(ret)
        作用(2):反斜杠后面跟普通字符实现特殊功能
            ret = re.search('s\+','s+gz').group()
            print(ret)
        特殊意义字符:
        \d  匹配任何十进制数;它相当于类[0-9]
            print(re.findall('\d{11}','afddasdfga123456789946453132'))
        \D  匹配任何非数字字符;它相当于类[^0-9]
            print(re.findall('\D{11}','afddasdfgaggg123456789946453132'))
        \s  匹配任何空白字符;它相当于类[\t\n\r\f\v]
            print(re.findall('\sasd','afdd asdfgaggg453132'))
        \S  匹配任何非空白字符;它相当于类[^\t\n\r\f\v]
            print(re.findall('\Sasd','afddasdfgaggg453132'))
        \w  匹配任何字母数字字符;它相当于类[a-zA-Z0-9_]
            print(re.findall('\wasd','afddasdfgaggg453132'))
        \W  匹配任何非字母数字字符;它相当于类[^a-zA-Z0-9_]
            print(re.findall('\Wasd','afdd asdfgaggg453132'))
        \b  匹配一个单词边界,也就是单词和空格之间的位置(任何特殊字符的边界都可以捕捉到)
            print(re.findall(r'I\b','I am hello LIsrw'))
        \\ 特殊意义:
            ret = re.findall(r'\\','abc\de')
            print(ret)
            #加r表示原生字符串没有特殊意义
            rets = re.findall(r'\bblow','blow')#注:python里面解释\会进行转意成\\
            print(rets)
        注意:*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配
        *符 作用:把前面一个匹配[0,正无穷]次
        +符 作用:把前面一个匹配[1,正无穷]次
        ?符 作用:惰性匹配,取最少的
    ()符 作用:分组
        import re
        #+表示匹配()中一个组的内容
        print(re.search('(as)+','sdjkfasas').group())#asas
        print(re.search('(as)|3','as3').group())#as
        拓展:
        ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})','weeew34ttt123/ooo')
        print(ret.group())
        print(ret.group('id'))
        print(ret.group('name'))
    |符 管道符 作用:或的意思
re模块: re模块是正则表达式模块
调用方法:import re
#正则表达式的方法
    1.re.findall():完全匹配(所有结果都返回到一个结果里)
    2.re.search():匹配出第一个满足的结果(返回匹配到的第一个对象(object),对象可以调用group()返回结果)
        import re
        ret = re.search('s.b','sebdgfadfhgarsab')
        print(ret)#<re.Match object; span=(0, 3), match='seb'>
        print(ret.group())#seb
    3.re.match():只在字符串开始匹配时匹配
        import re
        ret=re.match('asd','fsddfgasd')
        print(ret)#None
        rets=re.match('asd','asdfsdfa')
        print(rets.group())
    4.re.split():通过指定分隔符对字符串进行切片
        import re
        ret=re.split('[k,s]','asdffksjdhjdcf')
        print(ret)
        rets=re.split('[j,s]','djksal')
        print(rets)
        rett=re.split('[j,s]','sdjksal')#注:有一个空,空是分出来的
        print(rett)
    5.re.sub():匹配替换
        import re
        ret=re.sub('a..x','s..b','asdfdfasalexdfgdfh')#替换,re.sub(pattern,repl,string,count,…)
        print(ret)#asdfdfass..bdfgdfh
    6.re.compile():该函数根据包含的正则表达式的字符串创建模式对象,可以实现更有效率的匹配。
        import re
        #第一种方法
        bnv=re.compile('\.com')#规则,ret是规则对象
        ret=bnv.findall('asdfasd.comasdf')
        print(ret)
        #第二种方法
        print(re.findall('\.com','asdfasd.comasdf'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值