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)
我试图获得一个具有 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)