从字典映射中替换字符串中的字符

时间:2012-04-14 17:27:45

标签: python string dictionary replace

我对python很新,所以请原谅我,如果我错过了一个明显的内置函数。

我有一个我生成的字典映射,如下所示:

dictionary = dict(zip(restAlphaSet,list(item)))

其中restAlpha设置一个字符串,list(item)是列表转换的迭代

我试图用它来替换我的字符串中的所有字符。我在网上找到了一个replaceAll函数,如下所示:

def replace_all(text, dic):
for i, j in dic.iteritems():
    if i != j:
        text = text.replace(i, j)
return text

不幸的是,这是有缺陷的,好像映射有a-> b,b-> a,然后什么都不会改变,因为b会被改变回a。

我找到了translate函数,但它不接受字典输入。

3 个答案:

答案 0 :(得分:5)

翻译速度更快。

>>> import string
>>> text.translate(string.maketrans("".join(restAlphaSet),"".join(item)))

答案 1 :(得分:3)

您正在忽略translate功能。有关使用示例,请参阅here

答案 2 :(得分:-1)

我意识到这是一个老问题,但似乎没有使用带有a->bb->a映射的字典的答案。

我需要一个类似的功能,并且完成工作的技巧是首先遍历我们需要替换的字符串,然后为每个char寻找映射。

def replace_all(text, dic):
    new_text = ""
    for char in text:
        for i, j in dic.iteritems():
            if char == i:
                new_text += j
return new_text