Python如何基于嵌套索引列表批量移除字符串指定区间内容
多索引区间批量移除字符串内容方案
你之前的实现失效的核心原因是依赖按空格拆分单词的逻辑,一旦字符串内容包含特殊符号、单词和符号绑定,拆分后的单词就无法和待删除内容匹配,导致过滤失败。
正确的实现逻辑完全基于索引位置处理,不受字符串内容格式影响:
- 先将所有待删除的索引区间按起始位置倒序排序,从字符串末尾往头部方向删除,避免删除前序区间导致后续索引偏移的问题
- 逐段拼接保留的字符串内容即可
代码实现
def remove_intervals(s: str, intervals: list[list[int]]) -> str: # 按区间起始位置倒序排序 sorted_intervals = sorted(intervals, key=lambda x: x[0], reverse=True) res = s for start, end in sorted_intervals: res = res[:start] + res[end:] return res # 测试用例1 原示例 sentence = 'Two Dogs and Three Cats' list_of_indices = [[0,3], [13, 18]] print(remove_intervals(sentence, list_of_indices)) # 输出:Dogs and Cats # 测试用例2 带特殊符号的场景 sentence2 = ':Two: Dogs and Three Cats' list_of_indices2 = [[1,4]] # 对应Two的索引位置 print(remove_intervals(sentence2, list_of_indices2)) # 输出::: Dogs and Three Cats
该方案支持任意数量的待删除区间,就算区间存在重叠也能正常处理。
内容的提问来源于stack exchange,提问作者abc
相关产品推荐
相关产品推荐

