如何使用python替换字符串中的多个字符?

如何使用python替换字符串中的多个字符?,python,string,python-3.x,replace,Python,String,Python 3.x,Replace,我在计算如何替换字符串中的多个字符时遇到了一些问题。我正在尝试编写一个名为replace(string)的函数,该函数接收一个输入,并用另一个字母替换输入中的某些字母 假设我有字符串“WXYZ”,我想用Y替换所有的W,用Z替换X,用W替换Y,用X替换Z。我想让它做替换,不管输入是什么。因此,如果我也做了类似replace(“wwzxwwxyyzwyy”)的事情,它应该像我上面说的那样替换字母 这就是我到目前为止所做的: def replace(string): for letters in st

我在计算如何替换字符串中的多个字符时遇到了一些问题。我正在尝试编写一个名为replace(string)的函数,该函数接收一个输入,并用另一个字母替换输入中的某些字母

假设我有字符串“WXYZ”,我想用Y替换所有的W,用Z替换X,用W替换Y,用X替换Z。我想让它做替换,不管输入是什么。因此,如果我也做了类似replace(“wwzxwwxyyzwyy”)的事情,它应该像我上面说的那样替换字母

这就是我到目前为止所做的:

def replace(string):
for letters in string:
    string = string.replace("W","Y").replace("X","Z").replace("Y","W").replace("Z","X")
print(string)
但当我用replace(“WXYZ”)运行它时

我得到的代码输出是:WXWX


而不是将YZWX作为输出。我还想使用python的内置函数。有人能帮我解决这个问题吗,谢谢

请注意,您的调用的结构是,在第一次调用中将
W
替换为
Y
,然后在第三次调用中将
Y
再次替换为
W
,从而取消第一次调用的输出

您应该使用
str.translate
,它比一堆链式
replace
调用更高效、更健壮:

_tab = str.maketrans(dict(zip('WXYZ', 'YZWX')))
def replace(string):
    return string.translate(_tab)


请注意,您的调用结构是这样的:在第一次调用中,
W
替换为
Y
,然后在第三次调用中,
Y
再次替换为
W
,撤消第一次调用的输出

您应该使用
str.translate
,它比一堆链式
replace
调用更高效、更健壮:

_tab = str.maketrans(dict(zip('WXYZ', 'YZWX')))
def replace(string):
    return string.translate(_tab)


str.translate
将是一条路。相关:
str.translate
将是一条路。相关: