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

时间:2017-10-03 00:37:26

标签: python string python-3.x replace

我在找出如何替换字符串中的多个字符时遇到了一些麻烦。我正在尝试编写一个名为replace(string)的函数,它接受一个输入,并用另一个字母替换输入中的某些字母。

假设我有字符串“WXYZ”,我想用Y替换所有W,用Z替换X,用W替换Z,用X替换Z.无论输入是什么,我都希望它进行替换。所以,如果我也做像替换(“WWZXWWXYYZWYYY”)这样的事情,它应该替换我上面所说的字母。

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

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的内置函数。有人可以帮我解决这个问题,谢谢!

1 个答案:

答案 0 :(得分:4)

请注意,您的通话的结构使得W在第一次通话中被Y替换,然后Y再次被替换为W第三次调用,撤消第一个调用的输出。

您应该使用str.translate,它比一堆链式replace调用更有效,更强大:

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