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

Python 查找、替换并打印更新的字符串,python,string,loops,random,str-replace,Python,String,Loops,Random,Str Replace,我正在尝试创建一个python脚本,它在一个字符串中有10-20行固定数据,其中有两个特殊字符,需要使用randomword() 字符串中的两个特殊字符是{},我想遍历该字符串以查找这些字符,并将它们替换为由randomword()生成的另一个随机字符串 就我所知,这段代码替换了所有出现的情况 带有随机字符串的{},但它们具有相同的值,我希望每个{}具有不同的值 我不知道如何将其放入循环中。非常感谢您的帮助。由于您已经在使用'{}'的默认占位符,您可以执行以下操作: >>> p

我正在尝试创建一个python脚本,它在一个
字符串中有10-20行固定数据,其中有两个特殊字符,需要使用
randomword()

字符串中的两个特殊字符是
{}
,我想遍历该字符串以查找这些字符,并将它们替换为由
randomword()生成的另一个随机
字符串

就我所知,这段代码替换了所有出现的情况 带有随机字符串的
{}
,但它们具有相同的值,我希望每个
{}
具有不同的值


我不知道如何将其放入
循环中。非常感谢您的帮助。

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

>>> 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;

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

>>> 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(97122)

使用
randint(97122)

可以使用正则表达式:

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

random_string1 = emgdidmmghkunqkwdfcnvsffdnfhvqrybhqdfklh;
random_string2 = mgggwchtzpuhntnfxzpsmkarkwnlghcwicnvxmpt;
random_string3 = liemdzegmzfpuozktclxnmfmavjkaxqhrfaldqkn;
random_string4 = ugchyijmsvzmeaiyzyaiudrnnfskzdboukvdwiye;
random_string5 = rfazvtvhygfixielqzbuhlnzvjjtrkhsdetomjri;
可以使用正则表达式:

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

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


生成随机词并使用string.format(*words)@AntonvBR我可以使用
randomword(int)
创建随机词,在哪里使用
string.format
?请写一个简短的回答:我睡着了。写下了我心中的答案。生成随机词并使用string.format(*words)@AntonvBR我可以创建随机词,使用
randomword(int)
,在哪里使用
string.format
?请写一个简短的回答:我睡着了。写下我心中的答案。作品几乎完美,谢谢!有一件事,就是只有当字符
{
}
在一起时,才会发生替换,就像这样:
{}
,因为如果文本在字符后面包含其他
{
和新行,它似乎会抛出错误。这取决于两者之间的内容。例如
{2}
将被传递给
.format()
的第三个(索引2)位置参数替换。有关其他详细信息,您可以查看链接的文档。我假设您的字符串中有精确的
{}
。工作几乎完美,谢谢!只有一件事,只有当字符
{
}时才能进行替换
放在一起,如下所示:
{}
,因为如果文本在字符后包含其他
{
行,它似乎会抛出错误。这取决于两者之间的内容。例如,
{2}
将被传递给
.format()的第三个(索引2)位置参数替换
。有关其他详细信息,您可以查看链接的文档。我假设您有确切的
{}
在您的字符串中。如果可能,我希望随机字符为小写,随机字符长度为40。hey@Hunter.S.Thompson我已根据您的要求编辑了我的代码。如果可能,我希望随机字符为小写,随机字符长度为40。hey@Hunter.S.Thompson I h我已经根据您的要求编辑了我的代码。无论如何,我都可以确保为每个随机字符串创建的随机文本与为早期随机字符串创建的随机文本不同?当然,有很多方法。但是您现在打算使用较短的字符串还是不使用整个字母表?您希望生成多少字符串?Curr我正在使用这个答案创建随机十六进制int,长度为2个字符,并替换
{}
生成值后,很可能存在相同的对。我将创建20-30个以上的字符串,用2个字符代替随机字符串。使用此函数:
binascii.b2a\u hex(os.uradom(1))
,我可以对随机字符串和十六进制整数使用相同的答案,这样它们就不会自己重复。好吧,是的,对于这样小的数字,这是完全不同的。对于原始数字,如果尝试,则无法生成重复数:-)。我可能会使用
random.sample(范围(256),n)
来选择n个唯一的数字(其中n是您需要的数量)。或者保留一组仍然可用或已使用的数字,并相应地选择和更新。是否有其他方法我可以确保为每个随机_字符串创建的随机文本与为早期随机_字符串创建的随机文本不同?当然,有一些方法。但您打算现在使用较短的字符串,还是不使用整个字母t?您希望生成多少字符串?目前我使用这个答案创建随机十六进制int,长度为2个字符,并替换
{}
生成值后,很可能存在相同的对。我将创建20-30个以上的字符串,用2个字符代替随机字符串。使用此函数:
binascii.b2a\u hex(os.uradom(1))
,我可以对随机字符串和十六进制整数使用相同的答案,这样它们就不会自己重复。好吧,是的,对于这样小的数字,这是完全不同的。对于原始数字,如果尝试,则无法生成重复数:-)。我可能会使用
random.sample(范围(256),n)
来选择n个唯一的数字(其中n是您需要的数量)。或者保留一组仍然可用或已使用的数字,并相应地选择和更新。