如何用不同的数字替换字符串中所有的出现情况

3 投票
2 回答
1404 浏览
提问于 2025-04-17 08:35

我这辈子从来没用过Python,现在我需要对一段代码做个小修改。

我需要把这个

 new_q = q[:q.index('?')] + str(random.randint(1,rand_max)) + q[q.index('?')+1:]

替换成一个可以把所有的问号(?)换成随机不同数字的东西。

我该怎么做呢?

2 个回答

2

如果你希望所有的数字都不一样,仅仅为每个出现的 ? 使用一个新的随机数字是不够的,因为随机数字可能会重复出现。你可以在这种情况下使用以下代码:

random_numbers = iter(random.sample(range(1, rand_max + 1), q.count("?")))
new_q = "".join(c if c != "?" else str(next(random_numbers)) for c in q)
5
import re
import random
a = 'abc?def?ghi?jkl'
rand_max = 9

re.sub(r'\?', lambda x:str(random.randint(1,rand_max)), a)

# returns 'abc3def4ghi6jkl'
import random
a = 'abc?def?ghi?jkl'
rand_max = 9
while '?' in a:
    a = a[:a.index('?')] + str(random.randint(1,rand_max)) + a[a.index('?')+1:]

或者不使用正则表达式:

撰写回答