我正在尝试调整我发现的这段代码,以便我可以构建一个游戏。这是我在葬礼上找到的原始代码,但是当我运行它时,我有两个我无法解决的错误。
该代码最初是针对Python2.5而我使用的是Python3.3我已经改变了一些明显的差异,有人可以帮助我吗?
为什么这不起作用?
def replace_all(text, dic):
for i, j in dic.iteritems():
text = text.replace(i, j)
return text
my_text = ("Hello everybody.")
reps = {"H":"|-|", "e":"3", "o":"0"}
txt = replace_all(my_text, reps)
print (txt)
答案 0 :(得分:1)
Python 3词典只有dict.items()
方法,dict.iteritems()
已被删除。
def replace_all(text, dic):
for i, j in dic.items():
text = text.replace(i, j)
return text
my_text = "Hello everybody."
reps = {"H": "|-|", "e": "3", "o": "0"}
txt = replace_all(my_text, reps)
工作正常。
但是,在这里使用str.translate()
会更有效:
trans_map = {ord(k): v for k, v in reps.items()}
txt = my_text.translate(trans_map)
演示:
>>> replace_all(my_text, reps)
'|-|3ll0 3v3ryb0dy.'
>>> trans_map = {ord(k): v for k, v in reps.items()}
>>> my_text.translate(trans_map)
'|-|3ll0 3v3ryb0dy.'
答案 1 :(得分:0)
def replace_all(text, dic):
for i in dic:
text = text.replace(i, dic[i])
return text