如何用不同的数字替换字符串中所有的出现情况
我这辈子从来没用过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:]
或者不使用正则表达式: