美文网首页
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