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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Python中的正则表达式(re) import rere.match #从开始位置开始匹配,如果开头没有则无re...
    BigJeffWang阅读 7,691评论 0赞 99
  • python的re模块--细说正则表达式 可能是东半球最详细最全面的re教程,翻译自官方文档,因为官方文档写的是真...
    立而人阅读 23,613评论 4赞 46
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 6,076评论 2赞 16
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,903评论 1赞 118
  • 夜半归来时,寒意裹相思。一枕旧梦,了却陈年,怎能知。八方风雨乱离愁,海北天南断心知。四顾无人语,千秋难记事。华灯又...
    林端木阅读 333评论 0赞 5

友情链接更多精彩内容