我想知道如何在一个字符串用不同的随机整数代替非数字字符。
我曾尝试以下:
text = '1$1#387'
rec_1 = re.sub("\D+",str(random.randint(0,9)),text)
然后,它产生:
output: 1717387
正如你所看到的,非数字字符已被替换相同的整数。我想每个非数字字符由不同整数代替。例如:
desired output: 1714387
请协助。
使用功能的替代值:
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"
,...
这是因为randint函数被调用只有1次。
您可以使用lambda
每次得到一个新的randint:
rec_1 = re.sub("\D+", lambda x: str(random.randint(0, 9)), text)