1

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

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

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

其中 restAlphaSet 它是一个字符串,而 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。

我找到了翻译功能,但它不接受字典输入。

4

3 回答 3

6

翻译速度更快。

>>> import string
>>> text.translate(string.maketrans("".join(restAlphaSet),"".join(item)))
于 2012-04-14T17:36:57.663 回答
4

您正在忽略翻译功能。有关使用示例,请参见此处。

于 2012-04-14T17:36:34.937 回答
-3

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

我需要一个类似的函数,而完成这项工作的技巧是首先遍历我们需要替换的字符串,然后为每个字符查找映射。

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
于 2015-11-01T00:24:36.713 回答