我的生活中从未使用过python。我需要对给定的代码进行一些修复。
我需要替换这个
new_q = q[:q.index('?')] + str(random.randint(1,rand_max)) + q[q.index('?')+1:]
用什么东西代替所有出现的?随机的,不同的数字。
我该怎么做?
答案 0 :(得分: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:]
答案 1 :(得分: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)