Python3 - 字符串匹配和替换

问题

在字符串中匹配指定的文本模式并替换

解决方案

对于简单的字面模式,直接使用 str.replace() 方法即可,比如:

text = 'yeah, but no, but yeah, but no, but yeah'

print(text.replace('yeah', 'yep'))
yep, but no, but yep, but no, but yep

对于复杂的匹配,需要使用 re 模块中的 sub() 函数。 比如: 将11/27/2012 的日期字符串改成 2012-11-27 。示例如下:

import re
text = 'Today is 11/27/2018. PyCon starts 3/13/2018.'
print(re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text))
Today is 2018-11-27. PyCon starts 2018-3-13.

sub() 函数中的第一个参数是匹配模式,第二个参数是替换模式。反斜杠数字指向匹配模式中的分组号。

讨论

如果除了替换后的结果外,还想知道替换了多少次,可以使用 re.subn() 来代替。比如:

new_text, n = re.subn(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text)
print(new_text)
print(n)

Today is 2018-11-27. PyCon starts 2018-3-13.
2

转载于:https://my.oschina.net/u/4000302/blog/3102639

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值