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

Python如何编写函数从字符串中移除指定substring子串

代码修正与完善方案

原代码存在的问题

  • 函数返回值标注错误:docstring标注返回NoneType,实际需要返回处理后的字符串,应该改为str
  • 缩进错误:for循环当前定义在函数体外,无法被函数调用执行
  • 变量命名冲突:循环变量使用了参数名substr,会覆盖传入的待移除子串参数
  • 核心逻辑错误:当前逻辑是遍历字符串的单个字符,判断条件无实际意义,完全没有匹配子串的逻辑

完善后的代码实现

方案1:使用Python内置字符串方法实现(最简写法)

直接调用str.replace()即可快速实现移除所有匹配子串的功能,代码如下:

def remove_substring(s, substr):
    """(str, str) -> str
    返回移除了所有子串substr后的新字符串

    remove_substring("Im in cs", "cs")
    输出:Im in 
    """
    return s.replace(substr, "")

方案2:手动实现匹配逻辑(不依赖内置replace方法)

如果需要自行实现子串匹配移除的底层逻辑,可以用滑动窗口思路实现:

def remove_substring(s, substr):
    """(str, str) -> str
    返回移除了所有子串substr后的新字符串

    remove_substring("Im in cs", "cs")
    输出:Im in 
    """
    n = len(s)
    m = len(substr)
    # 边界情况处理:子串为空或长度超过原字符串直接返回原串
    if m == 0 or m > n:
        return s
    other_s = []
    i = 0
    while i < n:
        # 检查当前位置开始是否匹配目标子串
        if i + m <= n and s[i:i+m] == substr:
            # 匹配成功则跳过整个子串的长度
            i += m
        else:
            # 不匹配则存入当前字符,指针后移一位
            other_s.append(s[i])
            i += 1
    return ''.join(other_s)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:42:01