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

时间:2018-11-19 14:21:30

标签: python string

我试图将一个字符串中的一系列数字乘以一个常数。我有这样的东西:

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"'

有人对如何进行有想法吗?谢谢

3 个答案:

答案 0 :(得分:2)

您只需要进行一些修改:

re.sub('(?<=AMOUNT\=")\d+', lambda match: str(int(match.group()) * 2), my_string)

要传递给lambda的对象是re.Match对象,其中包含您需要的编号。现在,您只需要使用.group()方法提取数字,转换为int * 2并转换回str

答案 1 :(得分:2)

您可以通过以下方式访问lambda中的匹配组:

re.sub('(?<=AMOUNT\=")\d+', lambda m:str(int(m.group(0))*2), my_string)

答案 2 :(得分:0)

您可以定义一个自定义函数并使用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"'