re.sub

替换字符串中每一个匹配的字串后返回替换后的字符串
该方法主要用的三个参数,第一个参数是匹配模式即正则表达式,也是你要替换的原字符串部分。第二个参数是你需要替换成的字符串。第三个参数是原字符串。
re.sub(pattern, repl, string, count=0, flags=0)

  • 匹配演练
    实战的效果是最好的,直接练习
    练习1:
    要求:把1234567用空字符替换掉,也就是相等于把字符串中的1234567删除掉。
import recontent = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
content = re.sub('\d+','',content)
print(content)

结果:
Extra stings Hello World_This is a Regex Demo Extra stings

练习2:
要求:把1234567替换成Replacement

import recontent = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
content = re.sub('\d+','Replacement',content)
print(content)

结果:
Extra stings Hello Replacement World_This is a Regex Demo Extra stings

练习3:
要求:把1234567替换成1234567 8910。(如果我们要替换的是原字符串本身或者包换原字符串)

import re#1.把匹配的正则表达式加一个括号
#2.\1是表示拿到匹配内容,就是把(\d+)的内容拿到手了和 8910组合成新的内容
#3.但是反斜杠会转义,我们需要原生字符,前面加r。
content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings'
content = re.sub('(\d+)',r'\1 8910',content)
print(content)

结果:
Extra stings Hello 1234567 8910 World_This is a Regex Demo Extra stings

练习4:

import rehtml='''<div id="songs-list"><h2 class="title">经典老歌</h2><p class="introduction">经典老歌列表</p><ul id ="list" class="list-group"><li data-view="2">一路上有你</li><li data-view="7"><a href="/2.mp3" singer="任贤齐">沧海一声笑</a></li><li data-view="4" class="active"><a href="/3.mp3" singer="齐秦">往事随风</a></li><li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li><li data-view="5"><a href="/5.mp3" singer="陈惠琳">记事本</a></li><li data-view="5"><a href="/6.mp3" singer="邓丽君">但愿人长久</a></li></ul>
</div>
'''

要求:把所有歌名匹配出来。要用到re.sub内容。因为上一篇我们用re.findall匹配出了所有歌名。当时直接用re.findall写的有些复杂,这次我们练习用re.sub简化下,再re.findall
思路:用re.sub把标签替换掉,我们只取所有歌名,标签不需要

html = re.sub('<a.*?>|</a>','',html)
print(html)
results = re.findall('<li.*?>(.*?)</li>',html,re.S)
print(results)
for result in results:print(result.strip())
结果:
<div id="songs-list"><h2 class="title">经典老歌</h2><p class="introduction">经典老歌列表</p><ul id ="list" class="list-group"><li data-view="2">一路上有你</li><li data-view="7">沧海一声笑</li><li data-view="4" class="active">往事随风</li><li data-view="6">光辉岁月</li><li data-view="5">记事本</li><li data-view="5">但愿人长久</li></ul>
</div>['一路上有你', '\n            沧海一声笑\n        ', '\n            往事随风\n        ', '光辉岁月', '记事本', '\n            但愿人长久\n        ']
一路上有你
沧海一声笑
往事随风
光辉岁月
记事本
但愿人长久

可以看到匹配出来的内容有的有换行符,有的没有,那是因为在li标签中,有的内容有换行符,有的内容没有…,所有我们取内容,strip()下就ok了。re.sub方法就介绍到这里。

正则系列4: re.sub用法相关推荐

  1. python中使用requests库获取昵图网图片,且正则中re.S的用法

    python中使用requests库获取图片,且正则表达式中re.S的用法以及r.text和r.content的区别和搜索关键词 这里我获取的是昵图网的图片 代码附上 这里我获取的是2020的图片 i ...

  2. 正则系列2: re.search用法

    re.search re.search扫描整个字符串并返回第一个成功的匹配. 该方法有3个参数,第一个就是你写的正则表达式,第二个匹配的目标字符串,第三个是一个匹配模式 re.search(patte ...

  3. Go基础系列:双层channel用法示例

    Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 双层通道的解释见Go的双层通道 ...

  4. java正则hitend,Java Matcher hitEnd()用法及代码示例

    Matcher类的hitEnd()方法用于检查此匹配器上的模式匹配是否已停止.当在匹配器中找不到更多匹配的组时,匹配结束.此方法返回一个声明相同的布尔值. 用法: public boolean hit ...

  5. C#正则的委托和lambda表达式用法

    前面说到过正则表达式中使用委托的做法:MatchEvaluator,见此 这是最标准的写法:自定义一个函数,然后用此函数委托作为参数实例化MatchEvaluator对象,最后在正则匹配的时候可以用此 ...

  6. Android系列之butterknife基本用法

    现在安卓项目开发中,butterknife是比较常用的注解框架,从而简化了findViewById的重复使用,提高了编程的效率 然而为什么要使用butterknife?一方面是为了提高编程效率,一方面 ...

  7. 正则系列——正则虐我千百遍,我要反抗了

    场景1:验证email是否合法 邮箱种类太多太多,什么net后缀,特殊的我们不做处理,下面我找了常用的一些邮箱: hyy@gmail.com 谷歌邮箱 hyy12@qq.com qq邮箱 hyy-12 ...

  8. pyecharts系列之Bar的用法

    文章目录 准备工作 一.柱状图 二.堆积柱状图 三.瀑布图 四.直方图 五.条形图 六.配置 1.主题配置 2.区域缩放 3.标记线 4.标记点 准备工作 1.安装库pyecharts 以下代码默认版 ...

  9. 音视频系列--OpenSL ES基础用法总结

    一.前置 OpenSL ES全称为Open Sound Library for Embedded Systems,及嵌入式音频加速标准.OpenSL ES是无授权费.跨平台.针对嵌入式系统封精心优化的 ...

最新文章

  1. Java基础Switch和循环控制
  2. python子进程通信_python执行子进程实现进程间通信的方法
  3. ES权威指南[官方文档学习笔记]-14 phrase search
  4. 将 GridView 中的内容导出到 Excel 中多个工作表(Sheet) 的方法
  5. 深度优先遍历算法-01小偷偷东西问题
  6. 香肠派对电脑版_《香肠派对》新春直播活动来袭
  7. 刘强东说过,如果京东失败99%是我个人造成,这话会灵验吗?
  8. python中的星号和乘号_Python 函数中参数前面一个和两个星号(**)的区别
  9. mysql遇到时区问题的坑(Java解决方案)
  10. 一张纸厚度是多少毫米_大洼20毫米水泥纤维板多少钱一张追求至善
  11. python之作业--------购物车优化
  12. 【优化算法】多目标蜻蜓优化算法(MODA)【含Matlab源码 1350期】
  13. 安卓手机多开助手v1.2 BY im大朋友
  14. 【集合论】关系闭包 ( 关系闭包求法 | 关系图求闭包 | 关系矩阵求闭包 | 闭包运算与关系性质 | 闭包复合运算 )
  15. 【文末下载PPT】李中文:软件成分安全分析(SCA)能力的建设与演进
  16. 烟台初中计算机会考,山东烟台市2018年初中学业水平考试WORD 版有答案
  17. 解决MacBookPro git push提示You hasn‘t joined this enterprise
  18. python 将 csv转excel (.xls和.xlsx)的几种方式
  19. mysql_check_MySQL中check的用法
  20. win11安卓子系统如何安装app

热门文章

  1. try/catch 的解释与用法
  2. Android 11 AppOps setOnOpNotedCallback实现分析
  3. 函数指针和指针函数有什么区别
  4. CAD教程:CAD软件中怎么将图块改层?
  5. Xshell7工具下载安装以及简单使用
  6. 4年前端狗,面试被虐,如何翻身?
  7. java生成迷宫_java怎么生成迷宫地图
  8. WINDOWS下输入法中英文切换
  9. 3D人体姿态估评估指标
  10. 【C语言】输入一个正整数 n,输入 n 个数,生成一个 n*n 的矩阵, 矩阵中第 1 行是输入的 n 个数,以后每一行都是上一行循环左移一个元素。