python字符串替换re.sub()方法解析


Posted in Python onSeptember 18, 2019

pattern可以是一个字符串也可以是一个正则,用于匹配要替换的字符,如果不写,字符串不做修改。\1 代表第一个分组

repl是将会被替换的值,repl可以是字符串也可以是一个方法。如果是一个字符串,反斜杠会被处理为逃逸字符,如\n会被替换为换行,等等。repl如果是一个function,每一个被匹配到的字段串执行替换函数。

\g<1> 代表前面pattern里面第一个分组,可以简写为\1,\g<0>代表前面pattern匹配到的所有字符串。

count是pattern被替换的最大次数,默认是0会替换所有。有时候可能只想替换一部分,可以用到count

实例1:

a = re.sub(r'hello', 'i love the', 'hello world')
print(a)<br data-filtered="filtered">'i love the world'  #hello world里面的hello被 i love the替换

实例2:

>>> a = re.sub(r'(\d+)', 'hello', 'my numer is 400 and door num is 200')
>>> a
'my numer is hello and door num is hello' #数字400 和 200 被hello替换

实例3:

a = re.sub(r'hello (\w+), nihao \1', r'emma','hello sherry, nihao sherry')
>>> a
'emma' #\1代表第一个分组的值即sherry,因为有两个sherry,所以用\1可以指代第二个,这样整个字符串被emma替换

示例4:

>>> a = re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2-\3-\1', '2018-06-07')
>>> a
'06-07-2018'
>>> a = re.sub('(\d{4})-(\d{2})-(\d{2})', r'\g<2>-\g<3>-\g<1>', '2018-06-07')
>>> a
'06-07-2018' #\2 和 \g<2> 指代的的都是前面的第二个分组

示例5:

import re
def replace_num(str):
  numDict = {'0':'?','1':'一','2':'二','3':'三','4':'四','5':'五','6':'六','7':'七','8':'八','9':'九'}
  print(str.group())
  return numDict[str.group()]
my_str = '2018年6月7号'
a = re.sub(r'(\d)', replace_num, my_str)
print(a) #每次匹配一个数字,执行函数,获取替换后的值

和sub()函数一样,只是返回的是一个tuple,替换后的字符串和替换的个数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
极简的Python入门指引
Apr 01 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
在Python中使用poplib模块收取邮件的教程
Apr 29 Python
Python实现二分查找与bisect模块详解
Jan 13 Python
彻彻底底地理解Python中的编码问题
Oct 15 Python
Django Rest framework之认证的实现代码
Dec 17 Python
python儿童学游戏编程知识点总结
Jun 03 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
Python图片处理模块PIL操作方法(pillow)
Apr 07 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
用pandas划分数据集实现训练集和测试集
Jul 20 Python
Ubuntu20下的Django安装的方法步骤
Jan 24 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 #Python
用Python写一个自动木马程序
Sep 17 #Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
Sep 17 #Python
Python中*args和**kwargs的区别详解
Sep 17 #Python
python SocketServer源码深入解读
Sep 17 #Python
Python @property使用方法解析
Sep 17 #Python
Python爬取知乎图片代码实现解析
Sep 17 #Python
You might like
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
Javascript - HTML的request类
2007/01/09 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
python中二维阵列的变换实例
2014/10/09 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
详解Python自建logging模块
2018/01/29 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
实习教师自我鉴定
2013/09/27 职场文书
企业理念标语
2014/06/09 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
英文版辞职信
2015/02/28 职场文书