[英]Python: Multiply a number in a string by a constant
我试图将一个字符串中的一系列数字乘以一个常数。 我有这样的事情:
my_string = 'AMOUNT="38000" AMOUNT="43000" AMOUNT="56399"'
我可以轻松做到这一点:
my_new_string = re.sub('(?<=AMOUNT\=")\d+', lambda _:str(38000 *2), my_string)
这有效,但这不是我所需要的。
我需要的输出如下:
my_new_string = 'AMOUNT="76000" AMOUNT="86000" AMOUNT="112798"'
有人对如何进行有任何想法吗? 谢谢
您只需要进行一些修改:
re.sub('(?<=AMOUNT\=")\d+', lambda match: str(int(match.group()) * 2), my_string)
传递给lambda
的对象是带有所需编号的re.Match
对象。 现在,您只需要使用.group()
方法提取数字,将其转换为int * 2
并转换回str
。
您可以访问lambda中的匹配组,如下
re.sub('(?<=AMOUNT\=")\d+', lambda m:str(int(m.group(0))*2), my_string)
您可以定义一个自定义函数并使用f字符串:
def splitter(x):
key, val = x.split('=')
return f'{key}="{int(val[1:-1])*2}"'
mystr = 'AMOUNT="38000" AMOUNT="43000" AMOUNT="56399"'
res = ' '.join(map(splitter, mystr.split()))
'AMOUNT="76000" AMOUNT="86000" AMOUNT="112798"'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.