搜索

首页  >  问答  >  正文

python - 正则表达式可以在查找的同时处理替换吗?

比如果一个字符串s = 'A23G4HFD567',我想通过正则查找字符串里的数字,然后通过某个表达式(比如说全部都乘2)处理完了再塞回原字符串,这要如果处理?这函数期望的结果应该return 'A46G8HFD1134'

def foo(s):
    nums = re.findall('\d+', s)
    return re.sub('\d+', '%s', s) % tuple(map(lambda x: int(x) * 2, nums))
    

我只能想到这种解法,我想知道有没更好做法,一次搜索就可以完成所有

巴扎黑巴扎黑2889 天前345

全部回复(1)我来回复

  • 天蓬老师

    天蓬老师2017-04-17 17:51:43

    可以酱紫:

    def double(matched):
        value = int(matched.group('value'))
        return str(value * 2)
    
    s = 'A23G4HFD567'
    print(re.sub('(?P<value>\d+)', double, s))

    用lambda就是:

    print(re.sub('(?P<value>\d+)', lambda matched: str(int(matched.group('value')) * 2), s))

    回复
    0
  • 取消回复