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

Python禁用split/find时,如何截取字符串并替换指定单词?

补全字符串单词替换代码的索引变量

需求说明

将字符串从开头截取至指定单词前,再从该单词末尾截取至结尾,中间插入新单词替换原单词。示例:将"I am a boy in a park."处理为"I am a girl in a park."。限制条件:不能使用split()、find()等内置方法。

问题分析

原代码的核心问题是未记录目标单词在原字符串中的起始索引,导致无法确定截取前后部分的边界。同时原代码的单词匹配逻辑存在硬编码错误(比如count ==3的判断),需要先修正匹配逻辑,记录下目标单词的起始位置。

修正并补全后的代码

sentence = input("Enter a sentence:")
print(sentence)

word = input("Enter a word:")
print(word)

count = 0
num_found = 0
start_idx = -1  # 新增:记录匹配到的单词起始索引

# 修正循环范围:避免漏查末尾字符
for i in range(len(sentence) - len(word) + 1):
    if sentence[i] == word[0]:
        count = 0
        for j in range(len(word)):
            if sentence[i + j] == word[j]:
                count +=1
            else:
                count = 0
                break
        # 当整个单词匹配完成时,记录起始索引并计数
        if count == len(word):
            print("           ", count, ":", word)
            num_found +=1
            start_idx = i  # 记录第一个匹配单词的起始位置
            count = 0

print("Number of findings of the word:", num_found)

replacement_word = input("Enter another word:")

# 补全索引变量
first_cut = sentence[0:start_idx]
print(first_cut)

second_cut = sentence[start_idx + len(word):]
print(second_cut)

print(first_cut + replacement_word + second_cut)

关键补全说明

  1. 新增start_idx变量:用于存储第一个匹配到的目标单词的起始索引,初始值设为-1表示未找到。
  2. first_cut的索引:sentence[0:start_idx]——从字符串开头截取到目标单词的前一个字符。
  3. second_cut的索引:sentence[start_idx + len(word):]——从目标单词的末尾(起始索引+单词长度)截取到字符串结尾。

注意事项

  • 上述代码默认替换第一个匹配到的目标单词,如果需要替换所有匹配项,需要修改逻辑,收集所有匹配的起始索引后逐个替换。
  • 如果未找到目标单词,start_idx保持-1,此时截取结果会出错,可以添加判断逻辑处理这种情况(比如提示未找到单词)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:45:28