替换字符串中的非数字字符

时间:2019-02-06 10:04:43

标签: python-3.x random

我想知道如何用不同的随机整数替换单个字符串中的非数字字符。

我尝试了以下方法:

text = '1$1#387'
rec_1 = re.sub("\D+",str(random.randint(0,9)),text)

然后产生:

output: 1717387 

如您所见,非数字字符已被相同的整数替换。我希望将每个非数字字符替换为不同的整数。例如:

desired output: 1714387

请协助。

2 个答案:

答案 0 :(得分:4)

使用函数作为替换值:

def replacement(match):
    return str(random.randint(0, 9))

text = '1$1#387'
rec_1 = re.sub(r"\D", replacement, text)

rec_1现在为"1011387""1511387",...

答案 1 :(得分:2)

这是因为randint函数仅被调用1次。
您可以每次使用lambda来获得新的randint:

rec_1 = re.sub("\D+", lambda x: str(random.randint(0, 9)), text)