You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现按指定索引分割字符串的Python函数?

Python字符串按索引分割函数实现方案

核心逻辑

要实现按给定索引分割字符串,本质就是按顺序截取字符串的不同区间:从起始位置到第一个索引,再从第一个索引到第二个索引,以此类推,最后补上从最后一个索引到字符串末尾的部分。

具体实现代码

from typing import List

def split_by_index(s: str, indexes: List[int]) -> List[str]:
    # 预处理索引:去重、排序,只保留0到字符串长度之间的有效索引
    valid_indexes = sorted({idx for idx in indexes if 0 < idx < len(s)})
    result = []
    start_pos = 0
    # 遍历每个有效索引,截取对应区间的子串
    for idx in valid_indexes:
        result.append(s[start_pos:idx])
        start_pos = idx
    # 添加最后一段剩余的字符串
    if start_pos < len(s):
        result.append(s[start_pos:])
    return result

代码说明

  • 索引预处理:用集合去重,避免重复分割;排序保证索引按递增顺序处理,防止分割顺序混乱;过滤掉超出字符串范围或无效的索引(比如0或等于字符串长度的索引),避免出现空串或错误截取。
  • 循环分割:从起始位置start_pos开始,依次截取到每个有效索引的子串,加入结果列表后更新起始位置。
  • 收尾处理:遍历完所有索引后,把最后一段从start_pos到字符串结尾的子串加入结果,确保没有遗漏。

测试验证

用题目给出的示例测试:

print(split_by_index("pythoniscool,isn'tit?", [6, 8, 12, 13, 18]))
# 输出:["python", "is", "cool", ",", "isn't", "it?"]

完全符合预期结果。

边界情况处理

  • 如果传入的索引列表为空,函数会直接返回包含原字符串的列表:[s]
  • 如果索引有重复或乱序,预处理步骤会自动去重并排序,保证分割逻辑正常
  • 如果索引超出字符串长度,会被过滤,不影响最终结果

内容的提问来源于stack exchange,提问作者dmtree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 19:55:10