繁体   English   中英

Python:将字符串中的数字乘以常量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM