替换字符串非数字字符

问题描述 投票:3回答:2

我想知道如何在一个字符串用不同的随机整数代替非数字字符。

我曾尝试以下:

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

然后,它产生:

output: 1717387 

正如你所看到的,非数字字符已被替换相同的整数。我想每个非数字字符由不同整数代替。例如:

desired output: 1714387

请协助。

python-3.x random
2个回答
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",...


2
投票

这是因为randint函数被调用只有1次。 您可以使用lambda每次得到一个新的randint:

rec_1 = re.sub("\D+", lambda x: str(random.randint(0, 9)), text)
© www.soinside.com 2019 - 2024. All rights reserved.