比如果一个字符串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))
我只能想到这种解法,我想知道有没更好做法,一次搜索就可以完成所有
天蓬老师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))