python re(十)

修改字符串

到目前为止,我们简单地搜索了一个静态字符串。正则表达式通常也用不同的方式,通过下面的 `RegexObject` 方法,来修改字符串。

方法/属性作用
split()将字符串在 RE 匹配的地方分片并生成一个列表,
sub()找到 RE 匹配的所有子串,并将其用一个不同的字符串替换
subn()与 sub() 相同,但返回新的字符串和替换次数
将字符串分片

`RegexObject` 的 split() 方法在 RE 匹配的地方将字符串分片,将返回列表。它同字符串的 split() 方法相似但提供更多的定界符;split()只支持空白符和固定字符串。就象你预料的那样,也有一个模块级的 re.split() 函数。

split(string [, maxsplit  =  0])

通过正则表达式将字符串分片。如果捕获括号在 RE 中使用,那么它们的内容也会作为结果列表的一部分返回。如果 maxsplit 非零,那么最多只能分出 maxsplit 个分片。


你可以通过设置 maxsplit 值来限制分片数。当 maxsplit 非零时,最多只能有 maxsplit 个分片,字符串的其馀部分被做为列表的最後部分返回。在下面的例子中,定界符可以是非数字字母字符的任意序列。

# !python

>>>  p  =  re.compile(r ' "W+ ' )

>>>  p.split( ' This is a test, short and sweet, of split(). ' )

[
' This ' ' is ' ' a ' ' test ' ' short ' ' and ' ' sweet ' ' of ' ' split ' '' ]

>>>  p.split( ' This is a test, short and sweet, of split(). ' 3 )

[
' This ' ' is ' ' a ' ' test, short and sweet, of split(). ' ]

有时,你不仅对定界符之间的文本感兴趣,也需要知道定界符是什么。如果捕获括号在 RE 中使用,那么它们的值也会当作列表的一部分返回。比较下面的调用:

# !python

>>>  p  =  re.compile(r ' "W+ ' )

>>>  p2  =  re.compile(r ' ("W+) ' )

>>>  p.split( ' This is a test. ' )

[
' This ' ' is ' ' a ' ' test ' '' ]

>>>  p2.split( ' This is a test. ' )

[
' This ' '   ' ' is ' '   ' ' a ' '   ' ' test ' ' . ' '' ]

模块级函数 re.split() 将 RE 作为第一个参数,其他一样。

# !python

>>>  re.split( ' ["W]+ ' ' Words, words, words. ' )

[
' Words ' ' words ' ' words ' '' ]

>>>  re.split( ' (["W]+) ' ' Words, words, words. ' )

[
' Words ' ' ' ' words ' ' ' ' words ' ' . ' '' ]

>>>  re.split( ' ["W]+ ' ' Words, words, words. ' 1 )

[
' Words ' ' words, words. ' ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值