我在找出如何替换字符串中的多个字符时遇到了一些麻烦。我正在尝试编写一个名为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的内置函数。有人可以帮我解决这个问题,谢谢!
答案 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'