python - 如何同时用2个字符串替换一个字符串
问题描述
我需要("AB")
通过具有一个 input 的函数同时用另外 2 个字符串(A -> -BF+AFA+FB- 和 B -> +AF-BFB-FA+ )替换一个字符串(sequence)
。
到目前为止,我有:
def replace_function(sequence):
for i in sequence:
string = sequence.replace("A","-BF+AFA+FB-").replace("B","+AF-BFB-FA+")
return string
replace_function("AB")
>>> -+AF-BFB-FA+F+AFA+F+AF-BFB-FA+-+AF-BFB-FA+
但是,我需要:
replace_function("AB")
>>> -BF+AFA+FB-+AF-BFB-FA+
解决方案
到目前为止,每个答案都将问题解释为 - 将 A 替换为包含 As 和 Bs 的 X,将 B 替换为可能还包含 As 和 Bs 的 Y(我认为这是预期的问题)。
OP 询问了 A 和 B 放在一起的特定情况,并且可能打算传递更大的序列,其中 AB 应该被单个实体替换,但 'ABB' 应该以 >> 的形式出现-BF+AFA+FB-+AF-BFB-FA+B
,而不是 -BF+AFA+FB-+AF-BFB-FA++AF-BFB-FA+
假设是这种情况,这是我与其他解决方案略有不同的答案,考虑到“AB”应该一起处理
def replace_function(sequence):
new_string = ''
for idx, s in enumerate(sequence):
if idx < len(sequence) - 1:
if sequence[idx] == 'A' and sequence[idx + 1] == 'B':
new_string += "-BF+AFA+FB-+AF-BFB-FA+"
elif sequence[idx - 1] == 'A' and sequence[idx] == 'B':
continue
else:
new_string += s
elif sequence[idx - 1] != 'A':
new_string += s
print(new_string)
replace_function("AB") # -BF+AFA+FB-+AF-BFB-FA+
replace_function("ABC") # -BF+AFA+FB-+AF-BFB-FA+C
replace_function("ABCBA") # -BF+AFA+FB-+AF-BFB-FA+CBA
replace_function("ABCBAB") # -BF+AFA+FB-+AF-BFB-FA+CB-BF+AFA+FB-+AF-BFB-FA+
推荐阅读
- sql - Oracle SQL:从加入日期开始的几周
- python - 列在熊猫交叉表中杂乱无章
- javascript - 承诺和承诺链如何工作?[代码问题]
- javascript - 在 Firefox 中使用 MediaStream API 记录完整的视频屏幕截图,但在 Chrome 中没有
- excel - 将数据验证(下拉)列表添加到一系列单元格?
- python - 如何根据熊猫中的不同条件和列对2个数据框进行分组
- c# - 如何从 foreach 更改为一次显示所有数据?
- google-chrome - 当我在浏览器中使用 0.0.0.0 而不是 localhost 时,Chrome/server 会做什么?
- php - $_POST 显示数组和数据
- deployment - 当分支中存在设置时,为什么部署的应用程序无法连接到 GraphQL 端点?