使用函数和.replace

时间:2013-12-07 21:06:47

标签: python function

我正在尝试调整我发现的这段代码,以便我可以构建一个游戏。这是我在葬礼上找到的原始代码,但是当我运行它时,我有两个我无法解决的错误。

该代码最初是针对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)

2 个答案:

答案 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