python re.sub详解
re.sub(pattern, repl, string, count=0, flags=0)
re.sub的含义,作用,功能就是:
对于输入的一个字符串,利用正则表达式(的强大的字符串处理功能),去实现(相对复杂的)字符串替换处理,然后返回被替换后的字符串
其中re.sub还支持各种参数,比如count指定要替换的个数等等。
下面就是来详细解释其各个参数的含义。
re.sub共有五个参数。
其中三个必选参数:pattern, repl, string
两个可选参数:count, flags
1:
pattern,表示正则中的模式字符串,这个没太多要解释的。
需要知道的是:
- 反斜杠加数字(\N),则对应着匹配的组(matched group)
- 比如\6,表示匹配前面pattern中的第6个group
- 意味着,pattern中,前面肯定是存在对应的,第6个group,然后你后面也才能去引用
比如,想要处理:
hello crifan, nihao crifan
而想要把整个这样的字符串,换成crifanli且此处的,前后的crifan,肯定是一样的。
则就可以这样的re.sub实现替换:
inputStr
=
"hello crifan, nihao crifan"
;
replacedStr
=
re.sub(r
"hello (\w+), nihao \1"
,
"crifanli"
, inputStr);
print
"replacedStr="
,replacedStr;
#crifanli
repl,就是replacement,被替换,的字符串的意思。
repl可以是字符串,也可以是函数。
repl是字符串
如果repl是字符串的话,其中的任何反斜杠转义字符,都会被处理的。
即:
- \n:会被处理为对应的换行符;
- \r:会被处理为回车符;
- 其他不能识别的转移字符,则只是被识别为普通的字符:
- 比如\j,会被处理为j这个字母本身;
- 反斜杠加g以及中括号内一个名字,即:\g<name>,对应着命了名的组,named group
接着上面的举例:
想要把对应的:
hello crifan, nihao crifan
中的crifan提取出来,只剩:crifan
inputStr
=
"hello crifan, nihao crifan"
;
replacedStr
=
re.sub(r
"hello (\w+), nihao \1"
,
"\g<1>"
, inputStr);
print
"replacedStr="
,replacedStr;
#crifan
repl是函数
比如输入内容是:hello 123 world 456
想要把其中的数字部分,都加上111,变成:hello 234 world 567
import re; def pythonReSubDemo():
"""
demo Pyton re.sub
"""
inputStr = "hello 123 world 456"; def _add111(matched):
intStr = matched.group("number"); #123
intValue = int(intStr);
addedValue = intValue + 111; #234
addedValueStr = str(addedValue);
return addedValueStr; replacedStr = re.sub("(?P<number>\d+)", _add111, inputStr);
print "replacedStr=",replacedStr; #hello 234 world 567 ###############################################################################
if __name__=="__main__":
pythonReSubDemo();
3:
string,即表示要被处理,要被替换的那个string字符串。
4:
count
假如对于匹配到的内容,只处理其中一部分
比如对于:hello 123 world 456 nihao 789
只是像要处理前面两个数字:123,456,分别给他们加111,而不处理789,
import re; def pythonReSubDemo():
"""
demo Pyton re.sub
"""
inputStr = "hello 123 world 456 nihao 789"; def _add111(matched):
intStr = matched.group("number"); #123
intValue = int(intStr);
addedValue = intValue + 111; #234
addedValueStr = str(addedValue);
return addedValueStr; replacedStr = re.sub("(?P<number>\d+)", _add111, inputStr, 2);
print "replacedStr=",replacedStr; #hello 234 world 567 nihao 789 ###############################################################################
if __name__=="__main__":
pythonReSubDemo();
关于re.sub的注意事项:
语法:
re.sub(pattern, repl, string, count
=
0
, flags
=
0
)
对应的第二个参数是repl。
需要你指定对应的r前缀,才是pattern:
r"xxxx"
python re.sub详解的更多相关文章
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- Python中dict详解
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...
- Python开发技术详解(视频+源码+文档)
Python, 是一种面向对象.直译式计算机程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库.它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结 ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- 【python进阶】详解元类及其应用2
前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...
- Python开发技术详解PDF
Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...
- python之数据类型详解
python之数据类型详解 二.列表list (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...
- Python环境搭建详解(Window平台)
前言 Python,是一种面向对象的解释型计算机程序设计语言,是纯粹的自由软件,Python语法简洁清晰,特色是强制用空白符作为语句缩进,具有丰富和强大的库,它常被称为胶水语言. Python是一种解 ...
- python docopt模块详解
python docopt模块详解 docopt 本质上是在 Python 中引入了一种针对命令行参数的形式语言,在代码的最开头使用 """ ""&q ...
随机推荐
- a^a^a^a^a^a^a^a^a
a^a^a^a是从前向后算,也就是a^(a^3)
- 大数据之hadoop集群安全模式
集群安全模式1.概述(1)NameNode启动 NameNode启动时,首先将镜像文件(Fsimage)载入内存,并执行编辑日志(Edits)中的各项操作.-旦在内存中成功建立文件系统元数据的影像,则 ...
- 手工编写JavaWeb项目
手工编写JavaWeb项目 一.打开Tomcat服务器 二.编写简单的web项目 三.访问项目 并且,tomcat服务器也是可以直接访问.txt的,其实就和其它的web服务器一样,什么都可以访问,和之 ...
- .NETFramework-Web.Mvc:HttpXxxAttribute-目录
ylbtech-.NETFramework-Web.Mvc:HttpXxxAttribute-目录 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返 ...
- win7下mysql5.5与mysql5.6同时安装
5.5己正常的情况下,用官方下载的安装包总是不成功,用的官方解压版5.6.44 1.复制my-default.ini到my.ini,只需要改端口就行了,设置base-dir/data-dir反而无法启 ...
- Linux 中执行Shell 脚本的方式(三种方法)
Shell 脚本的执行方式通常有如下三种: (1)bash script-name 或者 sh script-name:(2)path/script-name或者./script-name:(3)so ...
- 十条服务器端优化Web性能的技巧总结
原文地址:http://www.jb51.net/yunying/452723.html 提高 web 应用的性能从来没有比现在更重要过.网络经济的比重一直在增长:全球经济超过 5% 的价值是在因特网 ...
- ABP Linq 扩展的 WhereIf 查询内部实现
public static class QueryableExtensions { public static IQueryable<T> WhereIf<T>(this IQ ...
- OA系统和ERP系统的区别
一.OA和ERP的区别 1.含义不同: OA指Office Automation,中文简称自动办公系统,帮助企业内部管理沟通的工具,比如新闻公告.内部沟通.考勤.办公.员工请假.审批流程等. ERP指 ...
- centos zabbix4.0编译安装
zabbix的部署原理 zabbix server需要把监控数据入sql数据库,所以得Mysql环境 zabbix的web是基于php开发的,所以得LNMP环境 部署zabbix server和zab ...