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

Python字符串切片未获预期结果,子串出现次数统计遇问题

问题分析与修正

代码中的三个关键错误

  1. 变量名拼写不一致:定义的子串变量是sub_string,但切片时写成了substring,实际运行中会触发NameError(你的输出有结果可能是输入时的笔误)。
  2. 切片结束索引错误:你用string[i:len(substring)]是从索引i截取到固定位置len(substring)(即3),导致每次截取的片段长度越来越短。正确写法应该是从i开始,截取长度等于子串长度的片段,即string[i:i+len(sub_string)]。
  3. 循环范围不足:range(len(string)-len(sub_string))只会生成0、1、2、3这4个起始索引,但实际需要覆盖0到4共5个起始位置,所以要改成range(len(string)-len(sub_string)+1),才能遍历所有可能的子串起始点。

修正后的代码

string = 'ABCDCDC'
sub_string = 'CDC'
sub_len = len(sub_string)
for i in range(len(string) - sub_len + 1):
    print(string[i:i+sub_len])

输出结果

ABC
BCD
CDC
DCD
CDC

如果要统计子串出现次数,只需在循环中添加计数器:

string = 'ABCDCDC'
sub_string = 'CDC'
sub_len = len(sub_string)
count = 0
for i in range(len(string) - sub_len + 1):
    if string[i:i+sub_len] == sub_string:
        count +=1
print(count)  # 输出:2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:16:01