Python中sub()的⽤法说明
Python来进⾏查询和替换⼀个⽂本字符串?
可以使⽤sub()⽅法来进⾏查询和替换,sub⽅法的格式为:
sub(replacement, string[, count=0])
replacement是被替换成的⽂本
string是需要被替换的⽂本
count是⼀个可选参数,指最⼤被替换的数量
例⼦:
import re
p = repile('(blue|white|red)')
print(p.sub('colour','blue socks and red shoes'))
print(p.sub('colour','blue socks and red shoes', count=1))
输出:
colour socks and colour shoes
colour socks and red shoes
subn()⽅法执⾏的效果跟sub()⼀样,不过它会返回⼀个⼆维数组,包括替换后的新的字符串和总共替换的数量
例如:
import re
p = repile('(blue|white|red)')
print(p.subn('colour','blue socks and red shoes'))
print(p.subn('colour','blue socks and red shoes', count=1))
输出
('colour socks and colour shoes', 2)
('colour socks and red shoes', 1)
补充:Python中正则表达式sub函数⽤法总结
正则表达式⼀个⽐较常见的⽤途是到所有模式匹配的字符串并⽤不同的字符串来替换它们。sub⽅法提供⼀个替换值,可以是字符串或函数,和⼀个要被处理的字符串。
1、这⾥的sub⽅法,是被编译成‘RegexObject'实例后的实例的⽅法
Sub(replacement,string[,count =0 ])
1)返回的字符串是在字符串中⽤RE最左边不重复的匹配来替换。如果模式没有被发现,字符将没有被改变的返回。
2)可选参数count是模式匹配后替换的最⼤次数;count必须是⾮负整数。缺省值是0表⽰替换所有的匹配。
例⼦:
2、模块级函数:sub⽅法
python教程字符串函数注:这些函数(包括sub函数)使⽤RE字符串作为第⼀个参数,⽽后⾯的参数与相应的“RegexObject”⽅法的参数相同,返回要么是None,要么是⼀个‘MatchObject'实例。
(实际sub返回的是字符串,,两者说法不⼀致,以实际为准)
Re.sub的作⽤在于:使⽤给定的替换内容将匹配模式的⼦字符串(最左端并且⾮重叠的⼦字符串)替换掉
3、作为替换的组号
在2的例⼦中,只是把⼀个字符串⽤其他的内容替换掉了。⽤replace这个字符串⽅法能轻松达到同样的效果。⽽正则表达式允许以更灵活的⽅式进⾏搜索,同时它们也允许进⾏功能更强⼤的替换。
见证re.sub强⼤功能的最简单⽅式就是在替换字符串中使⽤组号。在替换内容中以‘\\n'型式出现的任何转义序列都会被模式中与组n匹配的字符串替换掉。
例如,假设要把‘*something*'⽤‘<em>someting</em>'替换掉,前者是在普通⽂本⽂档(⽐如Email)中进⾏强调的常⽤⽅法,⽽后者则是相应的HTML代码(⽤于⽹页)
这⾥把所有的* *含的字符串都替换掉了。刚开始我以为只替换*world*。记⼀笔。
4、作为替换的函数
Re.sub函数可以将⼀个函数作为第⼆个参数(替换式)。函数会被匹配的对象调⽤,并且它的返回值会
被插⼊到⽂本中。(但从例⼦2看来,是函数的唯⼀参数是被匹配的对象)
例⼦1:
<内容:
结果:
例⼦2
(该例⼦在《python基础教程》20章)
Sub⽅法不直接调⽤callback,⽽是返回⼀个新的函数,这个函数会被当成re.sub的替换函数来使⽤(这就是采⽤⼀个匹配的对象作为唯⼀参数的原因)
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。如有错误或未考虑完全的地⽅,望不吝赐教。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论