正则表达式替换字符串
语法为:re.sub(pattern, repl, string, count, flags),其中pattern 表示模式字符串,repl表示用来替换的字符串,string表示要替换的原始字符串,count表示替换次数,flags用来控制匹配方式,例如区分大小写等
import re
pattern = r'1[34578]\d{9}' #定义模式字符串,\d表示匹配数字
s1 = "中奖号码:45678901 联系电话:18001234567" #匹配字符串
result = re.sub(pattern,"1XXXXXXXXXX",s1) #替换结果,注意引号
print(result)
中奖号码:45678901 联系电话:1XXXXXXXXXX
#例:替换颜色字符,将颜色字符替换成@__@
import re
pattern1 = r'(黄色)|(绿色)|(红色)|(紫色)' #定义模式
a1 = "今天我穿了一件套头卫衣,黄色的!我很喜欢这件衣服。" #原始字符串
result1 = re.sub(pattern1,"@__@",a1) #替换字符串中的颜色字符
print(result1) #输出
今天我穿了一件套头卫衣,@__@的!我很喜欢这件衣服。
正则表达式分割字符串
语法为:re.split(pattern, string, [maxsplit], [flags]),其中pattern 表示模式字符串,string表示要分割的原始字符串,maxsplit可选参数表示最大分割次数,flags可选参数表示标志位,用来控制匹配方式,例如区分大小写等
import re
pattern2 = r'[?|&]' #分割模式
url = "http://www.baidu.com?usename='halun2020'&psd='12345678'"#原始字符串
result2 = re.split(pattern2,url) #分割
print(result2)
['http://www.baidu.com', "usename='halun2020'", "psd='12345678'"]
#例 输出@好友的名单列表
import re
namelist = "@张三 @李四 @王五 @赵六 @钱七" #原始字符串,空格不一样
pattern3 = r'\s*@' #模式,使用空格或单独的@分割字符串 \s表示匹配任意空白符,*表示匹配前面字符0次或多次
result3 = re.split(pattern3,namelist) #分割
print("@的好友名单为:",result3)
@的好友名单为: ['', '张三', '李四', '王五', '赵六', '钱七']
#输出结果第一个为空,为了解决该问题,可以写一个for循环
import re
namelist = "@张三 @李四 @王五 @赵六 @钱七" #原始字符串,空格不一样
pattern3 = r'\s*@' #模式,使用空格或单独的@分割字符串 \s表示匹配任意空白符,*表示匹配前面字符0次或多次
result3 = re.split(pattern3,namelist) #分割
print("@的好友名单为:") #注意print for的搭配使用
for item in result3:
if item != "": #如果好友名不为空
print("好友的名字:",item)
@的好友名单为:
好友的名字: 张三
好友的名字: 李四
好友的名字: 王五
好友的名字: 赵六
好友的名字: 钱七