查找、替换并打印出更新后的字符串

Find, replace and print out updated string

我正在尝试创建一个 python 脚本,该脚本在 string 中包含 10-20 行固定数据,其中有 2 个特殊字符需要用 不同的字符替换,随机 string 使用 randomword()

import random, string

def randomword(length):
   letters = string.ascii_lowercase
   return ''.join(random.choice(letters) for i in range(length))


junk = """
random_string1 = {};
random_string2 = {};
random_string3 = {};
random_string4 = {};
random_string5 = {};
"""

stra = string.replace(junk, '{}', randomword(40))
print (stra)

字符串中的两个特殊字符是{},我想遍历字符串以找到那些字符并将它们替换为不同的随机stringrandomword()

生成

以上是我得到的,这段代码替换了所有出现的地方 {} 的随机字符串,但它们具有相同的值,我希望每个 {}.

具有不同的值

我不知道如何将其放入 loop。感谢您的帮助。

由于您已经在使用 string formatting '{}' 的默认占位符,您可以执行以下操作:

>>> print(junk.format(*(randomword(40) for _ in range(junk.count('{}')))))

random_string1 = lazbdzezssemtsfknajawriafozpjwizigykvmac;
random_string2 = pxhkyrnjiqsvcivcppqqpbwuocsvbfauygdrwpuj;
random_string3 = ewhrsryjtfwtmulmqfqxzrzvyspiefrddpzrxkvq;
random_string4 = sqiulddoevddtieymjiexnmzezrdayvwigmsmgld;
random_string5 = evscqvrccknkulpkqchodcjlognsnrcxqcsexnrv;

使用randint(97, 122)

import random 


def randomword(length):
   s = ""
   for _ in range(length):
       a = random.randint(97, 122)
       s += chr(a)
   return s

def replace(original_string, string_to_replace):
    result_string = ""
    while original_string.find(string_to_replace) >= 0:
      pos = original_string.find(string_to_replace)
      result_string += original_string[0: pos]
      result_string += randomword(40)
      next_pos = pos+2
      original_string = original_string[next_pos:]
    result_string += original_string[:]
    return result_string

junk = """
random_string1 = {};
random_string2 = {};
random_string3 = {};
random_string4 = {};
random_string5 = {};
"""

stra = replace(junk, "{}")
print (stra)

可以使用正则表达式:

>>> print(re.sub('{}', lambda _: randomword(40), junk))

random_string1 = emgdidmmghkunqkwdfcnvsffdnfhvqrybhqdfklh;
random_string2 = mgggwchtzpuhntnfxzpsmkarkwnlghcwicnvxmpt;
random_string3 = liemdzegmzfpuozktclxnmfmavjkaxqhrfaldqkn;
random_string4 = ugchyijmsvzmeaiyzyaiudrnnfskzdboukvdwiye;
random_string5 = rfazvtvhygfixielqzbuhlnzvjjtrkhsdetomjri;