Python 使用“替换”时避免重叠

Python 使用“替换”时避免重叠,python,python-3.x,replace,overlap,Python,Python 3.x,Replace,Overlap,我正在玩一个简单的加密程序,我希望它能工作,这样每个特定的符号,总是会变成另一个特定的符号。这可能不是最好的描述,但我不知道该怎么说。。。例如: “a”将是“h” “A”将是“k” “h”将是“W” 问题是,我对每个符号替换都使用replace命令,所以如果我们假设代码的输入顺序与我们的示例相同,并且我想要加密的消息是“aAh”,那么我希望加密的输出是“hKW”,但实际上我们得到的是这个输出,而不是“WKW” 我知道这是为什么,所以我的问题是: 如何让程序按照我的预期方式对消息进行加密?您遇到的

我正在玩一个简单的加密程序,我希望它能工作,这样每个特定的符号,总是会变成另一个特定的符号。这可能不是最好的描述,但我不知道该怎么说。。。例如:

“a”将是“h”

“A”将是“k”

“h”将是“W”

问题是,我对每个符号替换都使用replace命令,所以如果我们假设代码的输入顺序与我们的示例相同,并且我想要加密的消息是“aAh”,那么我希望加密的输出是“hKW”,但实际上我们得到的是这个输出,而不是“WKW”

我知道这是为什么,所以我的问题是:


如何让程序按照我的预期方式对消息进行加密?

您遇到的问题是您正在将更改应用于中间字符串(因此以前的更改将影响结果)


考虑尝试为每个字符计算初始字符串上的预期更改,并在之后构建最终字符串

您可以使用dict进行字符映射,然后使用生成器表达式翻译字符:

m = {'a': 'h', 'A': 'K', 'h': 'W'}
print(''.join(m.get(c, c) for c in text_1))
这将产生:

hKW
hKW