如何解决用列表中的随机字母替换每个单个字符
User ID
运行此命令时,它确实代替了!列表中有一个随机字母,但字母都相同。我该怎么做呢!再收到一封信?
解决方法
在这里,我使用生成器表达式,并假设您要随机替换来采样:
>>> import string
>>> import random
>>> letters = string.ascii_lowercase
>>> print(letters)
abcdefghijklmnopqrstuvwxyz
>>> test = '!A!B!!'
>>> ''.join(random.choice(letters) if c == '!' else c for c in test)
'uAqBtq'
>>> ''.join(random.choice(letters) if c == '!' else c for c in test)
'xApBfo'
,
克里斯的解决方案行之有效,我想提供一些背景说明您为什么不这样做。
Replace_Character = Replace_Character.replace("!",random.choice(Letters))
要对此进行评估,Python需要弄清楚用什么参数调用str.replace()。它知道第一个参数是"!"
,但是它需要评估第二个参数。因此,它首先执行random.choice(Letters)
。假设它得到字母q
。然后,它调用Replace_Character.replace(“!”,“ q”)。您可以看到每次将它设置为相同字符的方式。
单行字符串生成器技巧很巧妙,但可能不堪重负或难以理解。这等效于Chris的回答,用普通的for循环编写。
new_string = ""
for character in old_string:
if (character == "!"):
# generate a random letter to replace the ! with
new_string += random.choice(Letters)
else:
# copy the old text,unmodified
new_string += character
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。