Python脚本只替换字符串一次,然后复制所有内容
当我运行print(s)时,它只替换输入一次,然后复制所有内容。如何解决此问题?为了方便起见,这里有一个想法,使用Python脚本只替换字符串一次,然后复制所有内容,python,arrays,python-3.x,string,random,Python,Arrays,Python 3.x,String,Random,当我运行print(s)时,它只替换输入一次,然后复制所有内容。如何解决此问题?为了方便起见,这里有一个想法,使用字符串中的小写字母、大写字母和数字: from string import ascii_letters, ascii_lowercase, ascii_uppercase, digits from random import choice Pattern = input("Enter your Pattern: ") s = Pattern pattern_d
字符串中的小写字母、大写字母和数字:
from string import ascii_letters, ascii_lowercase, ascii_uppercase, digits
from random import choice
Pattern = input("Enter your Pattern: ")
s = Pattern
pattern_dict = {
'/X': ascii_letters,
'/L': ascii_lowercase,
'/U': ascii_uppercase,
'/0': digits
}
for i in range(RepeatThisManyTimes):
for pattern, replacement in pattern_dict.items():
while pattern in s:
s = s.replace(pattern, choice(replacement), 1
其思想是迭代这对模式,在字典中查找(\L
,\U
,\0
)及其各自的可能值池以替换(ascii\U小写
,ascii\U大写
,数字
)。然后,当一个给定的模式出现在字符串中时,我们用从替换池中随机获取的值替换其中一个模式。您能显示替换代码并解释出现了什么问题吗?没关系,我修复了该部分。现在我有一个新问题。我编辑了这篇文章,这样你就可以确切地看到问题所在,谢谢你的帮助。我试过了,效果很好。但现在我面临另一个问题。我试着把它放在for循环中,这样它会重复一定的次数,现在的问题是它总是相同的文本。它只选择一次随机字符串,然后只打印完全相同的内容。有解决办法吗?我得看看你的代码,看看有什么问题。确保在每次迭代中调用choice
,而不是只调用一次(否则,您只会随机选择一次,并始终使用相同的选择)。还要检查是否没有覆盖过程中的任何重要变量。第一次运行循环后,s
已被修改,因此它没有任何模式/L
、/U
或/0
,这就是为什么之后看不到任何更改。对于范围内的i(RepeatThisManyTimes)
循环,您需要在每次迭代时“刷新”s
。试着把线s=Pattern
放在这个循环中。谢谢。这一切都解决了。就因为你解释得很好,我现在有了一个想法,可以帮助我自己解决问题。我应该看看代码,了解到底发生了什么。再次非常感谢。
from random import choice
from string import ascii_lowercase, ascii_uppercase, digits
s = 'ABC-/U-/L-/0'
pattern_dict = {
'/L': ascii_lowercase,
'/U': ascii_uppercase,
'/0': digits
}
for pattern, replacement in pattern_dict.items():
while pattern in s:
s = s.replace(pattern, choice(replacement), 1)