我有一个字符串:
"A XYZ B XYZ C"
并且还有一组索引元组的列表:
((2, 5), (8, 11))
我想要将每个由索引定义的子字符串替换为它们的和:
A 7 B 19 C
我不能使用字符串替换,因为它会匹配XYZ的两个实例。使用索引信息进行替换将在第二次和第四次迭代中出现错误,因为索引在整个过程中正在移动。
有没有一个好的解决方案来解决这个问题?
更新。 字符串仅用作示例。我事先不知道其内容,也无法在解决方案中使用它们。
我的临时解决方案是:
text = "A XYZ B XYZ C"
replace_list = ((2, 5), (8, 11))
offset = 0
for rpl in replace_list:
l = rpl[0] + offset
r = rpl[1] + offset
replacement = str(r + l)
text = text[0:l] + replacement + text[r:]
offset += len(replacement) - (r - l)
它依赖于索引元组的顺序是升序的。有更好的方法吗?