查找,替换和打印更新的字符串

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

我正在尝试创建一个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)

字符串中的两个特殊字符是{},我想遍历字符串来查找这些字符,并用string生成的不同随机randomword()替换它们

上面是我得到的,这段代码用随机字符串替换所有出现的{},但是它们具有相同的值,我希望每个{}都有不同的值。

我不知道如何将它放入loop。任何帮助表示赞赏。

python string loops random str-replace
3个回答
1
投票

使用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)

1
投票

由于您已经在使用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;

1
投票

可以使用正则表达式:

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

random_string1 = emgdidmmghkunqkwdfcnvsffdnfhvqrybhqdfklh;
random_string2 = mgggwchtzpuhntnfxzpsmkarkwnlghcwicnvxmpt;
random_string3 = liemdzegmzfpuozktclxnmfmavjkaxqhrfaldqkn;
random_string4 = ugchyijmsvzmeaiyzyaiudrnnfskzdboukvdwiye;
random_string5 = rfazvtvhygfixielqzbuhlnzvjjtrkhsdetomjri;
© www.soinside.com 2019 - 2024. All rights reserved.