【发布时间】:2012-11-17 13:58:41
【问题描述】:
我已经使用字典研究了字符替换,但我仍然无法让我的代码正常工作。我的代码是这样的:
def encode(code,msg):
for k in code:
msg = msg.replace(k,code[k])
return msg
现在,当我运行代码时:
code = {'e':'x','x':'e'}
msg = "Jimi Hendrix"
encode(code,msg)
它给了我“Jimi Hxndrix”而不是“Jimi Hxndrie”。如何将字母“x”也替换为“e”?
【问题讨论】:
-
您只替换了
e的第一次 出现的x,然后x的e的第一次 出现.因此,Jimi Hendrix变为Jimi Hendrie,然后变为Jimi Hxndrie。.replace()没有做你认为的事情。 -
@Martjin Pieters No. 如果在 "Jimi Hendrix fixed the axes" 上执行
msg = msg.replace(k,code[k])后跟print k,' ',msg,它首先打印 Jimi Hendrie fieed the aees 然后 Jimi Hxndrix fixxd thx axxs 。那是因为 code 是一个字典,它不是按“e”然后“x”的顺序迭代,而是按“x”先和“e”后的顺序迭代。并且字符串中所有出现的字符都会被替换,而不仅仅是第一个。
标签: python dictionary replace character