美文网首页
Python3 - 字符串匹配和替换

Python3 - 字符串匹配和替换

作者: 惑也 | 来源:发表于2018-12-18 22:16 被阅读55次

    问题

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

    解决方案

    对于简单的字面模式,直接使用 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
    

    相关文章

      网友评论

          本文标题:Python3 - 字符串匹配和替换

          本文链接:https://www.haomeiwen.com/subject/hlyrkqtx.html