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

Python如何将字符串中&int-int标记替换为对应索引切片内容

优化解决方案

你可以用正则表达式大幅简化实现逻辑,代码量更小,可读性和执行效率也更高:

def expand(text):
    import re
    # 匹配&开头后接数字-数字的标记,捕获起止索引
    pattern = r'&(\d+)-(\d+)'
    # 第一步:移除所有标记,得到索引参考字符串
    ref_str = re.sub(pattern, '', text)
    ref_len = len(ref_str)
    
    # 替换回调函数:每个匹配到的标记替换为对应切片或?
    def replace_match(match):
        start = int(match.group(1))
        end = int(match.group(2))
        res = []
        for i in range(start, end+1):
            res.append(ref_str[i] if i < ref_len else '?')
        return ''.join(res)
    
    # 执行替换返回结果
    return re.sub(pattern, replace_match, text)

测试验证

  • 测试用例1:expand("abcd&1-4efg") → 输出abcdbcdeefg,和需求一致
  • 测试用例2:expand("abcd&5-10efgh") → 输出abcdfgh???efgh,符合缺失索引补?的要求
  • 测试用例3:expand("&10-15abcdef&1-5&4-5pqrs") → 支持连续标记的场景

方案优势

  1. 代码量仅为原实现的1/4,逻辑清晰易维护
  2. 正则匹配底层是C实现,执行效率远高于手动逐字符遍历
  3. 天然支持多位数的起止索引,不需要额外处理数字拼接逻辑
  4. 边界处理简单,缺失索引补?的逻辑直接遍历区间判断即可

内容的提问来源于stack exchange,提问作者Adam Firdaus Tan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:15:03