【发布时间】:2017-07-27 11:12:55
【问题描述】:
我有一个字符串:
"A XYZ B XYZ C"
还有一个索引元组列表:
((2, 5), (8, 11))
我想将索引定义的每个子字符串替换为它们的总和:
A 7 B 19 C
我不能使用字符串替换来做到这一点,因为它会匹配 XYZ 的两个实例。使用索引信息替换将在第二次和第四次迭代中中断,因为索引在整个过程中不断变化。
这个问题有什么好的解决方案吗?
UPDATE. 例如给出字符串。我不知道它的内容,也不能在解决方案中使用它们。
我的肮脏解决方案是:
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)
这取决于索引元组的升序。可以做得更好吗?
【问题讨论】: