美文网首页
python入门与进阶(10-11)

python入门与进阶(10-11)

作者: buaishengqi | 来源:发表于2018-05-09 21:19 被阅读6次

    10-11 re.sub正则替换

    # 10-11 re.sub正则替换
    # 正则表达式中,并不是仅仅只有re一个模块,本章介绍re.sub
    # 看例子
    
    
    # re.findall用于查找,今天所讲的re.sub用于替换
    import re
    lanuage = 'pythonC#javaphp'
    r = re.sub('C#','GO',lanuage)#注意re.sub的几个参数的意义
    print(r)
    # 打印结果如图1
    
    import re
    lanuage = 'pythonC#javaC#phpC#'
    r = re.sub('C#','GO',lanuage,0)#注意re.sub的0的意义表示无限制的匹配下去,不管多少C#,全部都会被替换
    print(r)
    # 打印结果如图2
    
    import re
    lanuage = 'pythonC#javaC#phpC#'
    r = re.sub('C#','GO',lanuage,1)#注意re.sub的1的意义表示只有字符串中第一个C#会被替换
    print(r)
    # 打印结果如图3
    
    # 看看下面的替换方法
    import re
    lanuage = 'pythonC#javaC#phpC#'
    lanuage.replace('C#','GO')
    print(lanuage)
    # 打印结果如图4,发现并没有实现替换!原因是字符串是不可变得,lanuage.replace('C#','GO')需要接收一下变量
    # lanuage = lanuage.replace('C#','GO')即可
    
    
    # re.sub强大的地方是第二个参数可以是个函数:看下面例子
    import re
    lanuage = 'pythonC#javaC#phpC#'
    def convert(value):
        pass
    r = re.sub('C#',convert,lanuage)
    print(r)
    # 打印结果如图5,C#消失不见了,是因为被函数里的空字符串替代了
    
    # 继续看例子
    import re
    lanuage = 'pythonC#javaC#phpC#'
    def convert(value):
        return '!!' + value + '!!'
    r = re.sub('C#',convert,lanuage)
    print(r)
    # 打印结果如图6,出现了报错,下面分析一下报错的原因:
    import re
    lanuage = 'pythonC#javaC#phpC#'
    def convert(value):#字符串并不会直接传到convert里面
        print(value)
        #return '!!' + value + '!!'
    r = re.sub('C#',convert,lanuage)
    print(r)
    # 打印结果如图7
    
    # 看看正确的代码:
    import re
    lanuage = 'pythonC#javaC#phpC#'
    def convert(value):#字符串并不会直接传到convert里面
        matched = value.group()#拿到匹配结果
        return '!!' + matched + '!!'
    r = re.sub('C#',convert,lanuage)
    print(r)
    # 打印结果如图8,成功打印
    
    01.jpg 02.jpg 03.jpg 04.jpg 05.jpg 06.jpg 07.jpg 08.jpg

    相关文章

      网友评论

          本文标题:python入门与进阶(10-11)

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