swap/replace 个字符串中的字符

swap/replace chars in a string

我试图获得一个具有 4 个不同字符值的字符串,我想在其中交换两个字符,然后交换另外两个字符

到目前为止我有这个,但是我使用的替换方法正在替换过程中的字符,导致结果不正确。

我的代码是这样的:

s = 'ABBDCA'

# printing original lists
print("The original list is : " + str(s))
  
# Swap elements in String list
# using replace() + list comprehension
res = [sub.replace('B', 'A').replace('D', 'C').replace('A', 'B').replace('C', 'D') for sub in s]
  
# printing result 
print ("List after performing character swaps : " + str(res))

我的结果是

The original list is : ABBDCA
List after performing character swaps : ['B', 'B', 'B', 'D', 'D', 'B']

但我想得到的结果是:

BAACDB

所以交换字符串中的 A 和 B,也交换 C 和 D。

你能看出为什么会这样吗?在用 As 替换所有 Bs 之后,现在有更多的 As 要转换回 Bs。您需要一个字符一个字符地执行此操作:

s = 'ABBDCA'
xlate = {'A':'B','B':'A','C':'D','D':'C'}
res = ''.join(xlate[c] for c in s)