用 python 正则表达式从旧字符串计算出的新字符串替换子字符串
substitute substring with a new one calculated from the old one with python regular expression
是否可以使用 Python 正则表达式将子字符串替换为使用原始子字符串的新子字符串 "calculated"?
举个例子:
假设我有子串userX40
,我想获取子串40
,转换为int
,乘以2,然后放回原来的字符串中:所以最终结果将是 user80
.
我可以在不同的段落中这样做,例如:
import re
in_str = "userX40"
original_num = int(re.search("\d+", in_str).group())
out_str = re.search("(.*)[^\d]", lll).group() + str(original_num*2)
有没有办法在一个命令中使用 re.sub
来完成?
是的,re.sub
是可能的。提供一个可调用对象,将匹配对象转换为 int,将其相乘,然后转换回字符串。
>>> s = "userX40"
>>> re.sub(r"\d+", lambda x: str(2*int(x.group())), s)
'userX80'
是否可以使用 Python 正则表达式将子字符串替换为使用原始子字符串的新子字符串 "calculated"?
举个例子:
假设我有子串userX40
,我想获取子串40
,转换为int
,乘以2,然后放回原来的字符串中:所以最终结果将是 user80
.
我可以在不同的段落中这样做,例如:
import re
in_str = "userX40"
original_num = int(re.search("\d+", in_str).group())
out_str = re.search("(.*)[^\d]", lll).group() + str(original_num*2)
有没有办法在一个命令中使用 re.sub
来完成?
是的,re.sub
是可能的。提供一个可调用对象,将匹配对象转换为 int,将其相乘,然后转换回字符串。
>>> s = "userX40"
>>> re.sub(r"\d+", lambda x: str(2*int(x.group())), s)
'userX80'