pythonre.subr(Pythonre.sub)

1.Python re.sub

【背景】Python中的正则表达式方面的功能,很强大。

其中就包括re.sub,实现正则的替换。功能很强大,所以导致用法稍微有点复杂。

所以当遇到稍微复杂的用法时候,就容易犯错。所以此处,总结一下,在使用re.sub的时候,需要注意的一些事情。

解释具体的注意事项之前,先把其具体的解释贴出来:re.subre.sub(pattern, repl, string, count=0, flags=0)Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl. If the pattern isn't found, string is returned unchanged. repl can be a string or a function; if it is a string, any backslash escapes in it are processed. That is, \n is converted to a single newline character, \r is converted to a carriage return, and so forth. Unknown escapes such as \j are left alone. Backreferences, such as \6, are replaced with the substring matched by group 6 in the pattern. For example:>>> re.sub(r'def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):',。 r'static PyObject*\npy_\1(void)\n{',。

'def myfunc():')'static PyObject*\npy_myfunc(void)\n{'If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string. For example:>>> def dashrepl(matchobj):。 if matchobj.group(0) == '-': return ' '。

else: return '-'>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')'pro--gram files'>>> re.sub(r'\sAND\s', ' & ', 'Baked Beans And Spam', flags=re.IGNORECASE)'Baked Beans & Spam'The pattern may be a string or an RE object.The optional argument count is the maximum number of pattern occurrences to be replaced; count must be a non-negative integer. If omitted or zero, all occurrences will be replaced. Empty matches for the pattern are replaced only when not adjacent to a previous match, so sub('x*', '-', 'abc') returns '-a-b-c-'.In addition to character escapes and backreferences as described above, \g will use the substring matched by the group named name, as defined by the (?P。) syntax. \g uses the corresponding group number; \g<2> is therefore equivalent to \2, but isn't ambiguous in a replacement such as \g<2>0. \20 would be interpreted as a reference to group 20, not a reference to group 2 followed by the literal character '0'. The backreference \g<0> substitutes in the entire substring matched by the RE.Changed in version 2.7: Added the optional flags argument.re.sub的功能re是regular expression的所写,表示正则表达式sub是substitute的所写,表示替换;re.sub是个正则表达式方面的函数,用来实现通过正则表达式,实现比普通字符串的replace更加强大的替换功能;举个最简单的例子:如果输入字符串是:?1inputStr = "hello 111 world 111"那么你可以通过?1replacedStr = inputStr.replace("111", "222")去换成"hello 222 world 222" 但是,如果输入字符串是:?1inputStr = "hello 123 world 456"而你是想把123和456,都换成222(以及其他还有更多的复杂的情况的时候),那么就没法直接通过字符串的replace达到这一目的了。

就需要借助于re.sub,通过正则表达式,来实现这种相对复杂的字符串的替换:?1replacedStr = re.sub("\d+", "222", inputStr)当然,实际情况中,会有比这个例子更加复杂的,其他各种特殊情况,就只能通过此re.sub去实现如此复杂的替换的功能了。所以,re.sub的含义,作用,功能就是:对于输入的一个字符串,利用正则表达式(的强大的字符串处理功能),去实现(相对复杂的)字符串替换处理,然后返回被替换后的字符串其中re.sub还支持各种参数,比如count指定要替换的个数等等。

下面就是来详细解释其各个参数的含义。re.sub的各个参数的详细解释re.sub共有五个参数。

其中三个必选参数:pattern, repl, string两个可选参数:count, flags第一个参数:patternpattern,表示正则中的模式字符串,这个没太多要解释的。需要知道的是:反斜杠加数字(\N),则对应着匹配的组(matched group)比如\6,表示匹配前面pattern中的第6个group意味着,pattern中,前面肯定是存在对应的,第6个group,然后你后面也才能去引用比如,想要处理:hello crifan, nihao crifan 且此处的,前后的crifan,肯定是一样的。

而想要把整个这样的字符串,换成crifanli则就可以这样的re.sub实现替换:?123inputStr = "hello crifan, nihao crifan";replacedStr = re.sub(r"hello (\w+), nihao \1", "crifanli", inputStr);print "replacedStr=",replacedStr; #crifanli第二个参数:replrepl,就是replacement,被替换,的字符串的意思。repl可以是字符串,也可以是函数。

repl是字符串如果repl是字符串的话,其中的任何反斜杠转义字符,都会被处理的。即:\n:会被处理为对应的换行符;\r:会被处理为回车符;其他不能识别的转移字符,则只是被识别为普通的字符:比如\j,会被处理为j这个字母本身;反斜杠加g以及中括号内一个名字,。

2.Python 的sub和replace的区别

sub出现于re库,用法是re.sub(pattern, repl, string, count=0, flags=0)

实例,re.sub(r'e','a','def',count = 1)

>>> daf

相对于replace来说,该方法功能更强,但是运行效率更低。

replace是自带函数,用法是str.replace(old, new[, max])

实例,'abbc'.replace('b','a',1)

>>>aabc

对比re.sub来说,replace没有正则的效果,但是运行效率更佳。请在实际应用中根据需求来定制使用方法,不要浪费资源。

pythonre,subr

3.python 正则表达式re.sub函数替换内容的一个比较基础的问题

正则表达式一个比较常见的用途是找到所有模式匹配的字符串并用不同的字符串来替换它们。sub方法提供一个替换值,可以是字符串或函数,和一个要被处理的字符串。

1、这里的sub方法,是被编译成'RegexObject'实例后的实例的方法

Sub(replacement,string[,count =0 ])

1)返回的字符串是在字符串中用RE最左边不重复的匹配来替换。如果模式没有被发现,字符将没有被改变的返回。

2)可选参数count是模式匹配后替换的最大次数;count必须是非负整数。缺省值是0表示替换所有的匹配。

例子:

2、模块级函数:sub方法

注:这些函数(包括sub函数)使用RE字符串作为第一个参数,而后面的参数与相应的“RegexObject”方法的参数相同,返回要么是None,要么是一个'MatchObject'实例。

(实际sub返回的是字符串,,两者说法不一致,以实际为准)

Re.sub的作用在于:使用给定的替换内容将匹配模式的子字符串(最左端并且非重叠的子字符串)替换掉

3、作为替换的组号

在2的例子中,只是把一个字符串用其他的内容替换掉了。用replace这个字符串方法能轻松达到同样的效果。而正则表达式允许以更灵活的方式进行搜索,同时它们也允许进行功能更强大的替换。

见证re.sub强大功能的最简单方式就是在替换字符串中使用组号。在替换内容中以'\\n'型式出现的任何转义序列都会被模式中与组n匹配的字符串替换掉。例如,假设要把'*something*'用'<em>someting</em>;'替换掉,前者是在普通文本文档(比如Email)中进行强调的常用方法,而后者则是相应的HTML代码(用于网页)

这里把所有的* *含的字符串都替换掉了。刚开始我以为只替换*world*。记一笔。

4.python 中 re.sub 和 re.compile 是啥意思呀

在python中re是一个常用的模块,主要是通过正则表达式进行字符串处理。它的速度相对自己用 find, replace, split来说,通常更快。当然功能更强大。

正则表达式也是一种语言,所以如果通过re.compile把它编译成对象,会速度快很多。所以我们经常看到这样的语句

exp = re.compile("\S+")

m = exp.search(bigtext)

print m.group(0)这段话等同于

m = re.search("\S+", bigtext)

print m.group(0)

re.sub则相当于字符串操作中的replace,比如

sometext = re.sub("(?isu)\r\n", "\n", sometext)上面这句话是将回车换行,变成换行。这是为了将windows下的文本文件移到linux下,防止某些软件不兼容所做的处理。

简单的说re.sub是做字符串替换的, re.compile是将正则表达式编译成一个对象,加快速度,并重复使用。

pythonre.subr

转载请注明出处编程代码网 » pythonre.subr(Pythonre.sub)

资讯

pythonsinaapi(python新浪微博api有什么用)

阅读(28)

本文主要为您介绍pythonsinaapi,内容包括python新浪微博api有什么用,如何用python调用新浪微博的api,如何通过python调用新浪微博的API。物信息、统计、网页制作、计算等多个领域都体现出了强大的功能。python和其他脚本语言如java、R、Per

资讯

pythonweb应用程序(Python可以写Web应用程序么?)

阅读(29)

本文主要为您介绍pythonweb应用程序,内容包括Python可以写Web应用程序么?,Python可以写Web应用程序么?,Python做的web应用程序可以在别的电脑上用吗?。QUOTE:原帖由 准备早起的鸟 于 2007-10-27 22:57 发表 Python可以写Web应用程序么?好像行

资讯

pythonnumpy空数组(python怎么输入一个数组矩阵)

阅读(28)

本文主要为您介绍pythonnumpy空数组,内容包括python中数组为空怎么表示,python中数组为空怎么表示,python怎么判断numpy.ndarray是否空。下面是基于python3.4的数组矩阵输入方法:1.import numpy as np2.arr = [1,2,3,4,5,6,7,8

资讯

pythonminint(pythonint什么意思)

阅读(28)

本文主要为您介绍pythonminint,内容包括pythonint什么意思,(n:int)>int:在python里是什么意思,python中center怎么用。int在python里是一个类,它是不可变数据类型中的一种,它的一些性质和字符串是一样的,是整型。1. Python int数字类型:整

资讯

python2.7版本(如何在Windows7上下载Python2.7?)

阅读(32)

本文主要为您介绍python2.7版本,内容包括如何在Windows7上下载Python2.7?,如何下载Wxpython2.7版本的python,64位系统,怎么下载?找不到啊,如何在Windows7安装Python2.7。说明:win7安装python2.7非常简单,只要到官方网站下载然后直接安装即可

资讯

python2.7.6升级(怎样从python2.7.6升级到2.7.12)

阅读(28)

本文主要为您介绍python2.7.6升级,内容包括怎样从python2.7.6升级到2.7.12,怎样把linux的python2.7.6升级到python2.7.12,怎样把linux的python2.7.6升级到python2.7.12。第一步:下载 # wget thon.org/ftp/python/2.7.12/Python-2.7.12.tar.x

资讯

python安装后环境变量(如何设置python下的环境变量)

阅读(39)

本文主要为您介绍python安装后环境变量,内容包括如何设置python下的环境变量,怎么把python添加到环境变量,如何将python添加到环境变量。windows下设置python环境变量,就是把python的安装目录添加到系统path中。2、步骤:1)确定python安装目录,

资讯

pythonweb文件(如何用python把网页上的文本内容保存下来)

阅读(29)

本文主要为您介绍pythonweb文件,内容包括windowspython网络下载文件存在哪里,python3如何下载某个网页的html文件,python怎么下载网站文件夹下的所有文件。先说下基本原理和过程原理:就是将可以打开的网页(这里不限制为网站,本地网页文件也可

资讯

python二进制转换为十进制(怎么用python二进制转换十进制)

阅读(25)

本文主要为您介绍python二进制转换为十进制,内容包括怎么用python二进制转换十进制,如何用python把二进制数转换为十进制数,python如何把科学计数法转换成10进制。二进制转十进制,十进制转二进制的算法 十进制转二进制: 用2辗转相除至结果为1

资讯

python如何处理文件(python的文件处理)

阅读(32)

本文主要为您介绍python如何处理文件,内容包括python的文件处理,python对文件进行处理,Python中文件处理。import globimport osimport refilelist = glob.glob(*.txt)p = re.compi

资讯

python中的shell是什么(pythonshell是什么东西)

阅读(26)

本文主要为您介绍python中的shell是什么,内容包括pythonshell是什么东西,python和shell有什么区别?,什么是pythonshell命令。python shell是Python的命令行。shell中最常用的是ls命令,python对应的写法是:os.listdir(dirn

资讯

python去重复行(python如何去除重复行并写入另一个文件?)

阅读(37)

本文主要为您介绍python去重复行,内容包括python如何去除重复行并写入另一个文件?,用python一行代码去掉数组中重复元素,python如何去除重复行并分别统计重复的行数?已有去除重复的代码。问题描述的并不准确要看重复行是连续的还是非连续的

资讯

pythonmimetypes(什么是MIMEType)

阅读(26)

本文主要为您介绍pythonmimetypes,内容包括python怎样获取某个文件的MIMEtype,python3.6pip时报错mimetypes.py编码错误,什么是MIMETYPEMIMETypes类型集合。首先,我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 XML、

资讯

pythonreadhdf5(好玩的电脑小代码)

阅读(34)

本文主要为您介绍pythonreadhdf5,内容包括好玩的电脑小代码,怎么安装hdf5package在python里,python中输入content=urllib.urlopen(url).read(),按F5运行后没有输。#coding=utf-8#表情识别import cv2from keras.models import load_modelimp

资讯

pythonrequests解析(pythonrequests库怎么解析响应)

阅读(36)

本文主要为您介绍pythonrequests解析,内容包括pythonrequests库怎么解析响应,python怎么解析requests.session.get,python:Request的函数是什么作用。Requests 是使用 Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为人类着想

资讯

pythonredis包(python怎么安装redis)

阅读(37)

本文主要为您介绍pythonredis包,内容包括python怎么安装redis,用python怎样实现异步redis客户端,python导入了cache包就不需要导入redis包吗。redis python-redis 安装详细步骤安装redis把redis安装到 /opt/redis-2.8目录中tar -zxfx

资讯

pythonre使用(Pythonre匹配)

阅读(25)

本文主要为您介绍pythonre使用,内容包括python如何使用re模块的sub函数实现把一串字母或者数字组合的字符,Pythonre匹配,Pythonre函数中文正则匹配。Python中字符串前面加上 r 表示原生字符串,与大多数编程语言相同,正则表达式里使用"\"作为转

资讯

pythonrequestments(关于python里面的requests和urllib的request?)

阅读(33)

本文主要为您介绍pythonrequestments,内容包括python使用requests模块,如何模拟进行登录并执行之后的操作?百,python:Request的函数是什么作用,python中request与requests模块有什么不同吗?。使用requests,它抄是基于urllib3开发2113的impor

资讯

pythonreplacen(pythonreplace正则怎么用)

阅读(24)

本文主要为您介绍pythonreplacen,内容包括python中replace(&#39;&#39;&#39;&#39;&#39;,&#39;&#39;).replace(&#39;&#39;&#39;&#39;&#39;,&#39;&#39;)是什么意思?,python字符替换replace,pythonreplace正则怎么用。# encoding: UTF-8 import

资讯

pythonreplace函数(Python的sub和replace的区别)

阅读(34)

本文主要为您介绍pythonreplace函数,内容包括python中replace(&#39;&#39;&#39;&#39;&#39;,&#39;&#39;).replace(&#39;&#39;&#39;&#39;&#39;,&#39;&#39;)是什么意思?,Python的sub和replace的区别,运用pythonreplace函数将手机号中间四位号码

资讯

pythonreferto(在python中float是什么意思?)

阅读(25)

本文主要为您介绍pythonreferto,内容包括在python中float是什么意思?,referto用法,referto的用法!。float是一种数据类型。浮点型数据类型,FLOAT 数据类型用于存储单精度浮点数或双精度浮点数。浮点数使用 IEEE(电气和电子工程师