zoukankan      html  css  js  c++  java
  • python字符串替换之re.sub()

    re.sub(patternreplstringcount=0flags=0)

    pattern可以是一个字符串也可以是一个正则,用于匹配要替换的字符,如果不写,字符串不做修改。1 代表第一个分组

    repl是将会被替换的值,repl可以是字符串也可以是一个方法。如果是一个字符串,反斜杠会被处理为逃逸字符,如 会被替换为换行,等等。repl如果是一个function,每一个被匹配到的字段串执行替换函数。

          g<1> 代表前面pattern里面第一个分组,可以简写为1,g<0>代表前面pattern匹配到的所有字符串。

     count是pattern被替换的最大次数,默认是0会替换所有。有时候可能只想替换一部分,可以用到count

    实例1:

    a = re.sub(r'hello', 'i love the', 'hello world')
    print(a)
    'i love the world' #hello world里面的hello被 i love the替换

    实例2:

    >>> a = re.sub(r'(d+)', 'hello', 'my numer is 400 and door num is 200')
    >>> a
    'my numer is hello and door num is hello' #数字400 和 200 被hello替换

    实例3:

    a = re.sub(r'hello (w+), nihao 1', r'emma','hello sherry, nihao sherry')
    >>> a
    'emma'  #1代表第一个分组的值即sherry,因为有两个sherry,所以用1可以指代第二个,这样整个字符串被emma替换

    示例4:

    >>> a = re.sub('(d{4})-(d{2})-(d{2})', r'2-3-1', '2018-06-07')
    >>> a
    '06-07-2018'
    >>> a = re.sub('(d{4})-(d{2})-(d{2})', r'g<2>-g<3>-g<1>', '2018-06-07')
    >>> a
    '06-07-2018'  #2 和 g<2> 指代的的都是前面的第二个分组
    

    示例5:

    import re
    def replace_num(str):
    	numDict = {'0':'〇','1':'一','2':'二','3':'三','4':'四','5':'五','6':'六','7':'七','8':'八','9':'九'}
    	print(str.group())
    	return numDict[str.group()]
    my_str = '2018年6月7号'
    a = re.sub(r'(d)', replace_num, my_str)
    print(a)  #每次匹配一个数字,执行函数,获取替换后的值
    

    re.subn(patternreplstringcount=0flags=0)

    和sub()函数一样,只是返回的是一个tuple,替换后的字符串和替换的个数  

     

     

  • 相关阅读:
    css sprite的实现
    python的range()函数使用方法
    Codeforces Round #260 (Div. 1) 455 A. Boredom (DP)
    n个整数全排列的递归实现(C++)
    AngularJS进阶(三十一)AngularJS项目开发技巧之获取模态对话框中的组件ID
    Swift扩展(Extension)
    leetcode 88 Merge Sorted Array
    Unity3D摄像机尾随人物
    mybatis 高级映射和spring整合之与Spring整合(6)
    mybatis 高级映射和spring整合之查询缓存(5)
  • 原文地址:https://www.cnblogs.com/guoxueyuan/p/9151678.html
Copyright © 2011-2022 走看看