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

Python项目技术求助:完成字符串替换后如何重组原句子

解决方法:将替换内容还原到原句子

你的核心问题是之前的操作仅处理了拆分后的单词列表,未保留原句子的标点和结构,以下是修正后的完整代码及关键步骤说明:

fruits = ['Quince', 'Raisins', 'Raspberries', 'Rhubarb', 'Strawberries', 'Tangelo', 'Tangerines']
# 获取用户输入并转为标题格式(若无需强制标题格式可去掉 .title())
random_sentence = input('Please enter a random sentence:\n').title()

# 拆分句子为单词列表,找出与水果列表的交集
split_sentence = random_sentence.split()
sentence_intersection = set(fruits).intersection(split_sentence)

if sentence_intersection:
    # 取交集里最后一个水果作为替换目标
    fruit_to_replace = list(sentence_intersection)[-1]
    # 从原句子的最后一个匹配水果处拆分,替换后重新拼接
    parts = random_sentence.rsplit(fruit_to_replace, 1)
    modified_sentence = parts[0] + 'Brussels Sprouts' + parts[1]
    print(modified_sentence)
else:
    print("句子中未找到匹配的水果")

关键说明:

  1. 保留原句子结构:放弃对原句子做strip(',.!?')操作,避免丢失标点,直接在用户输入的原始句子(或经过title转换后的句子)上进行替换。
  2. 精准替换最后一个匹配项:使用rsplit(fruit_to_replace, 1)将句子从最后一次出现目标水果的位置拆分为两部分,再将替换字符串插入中间,既保证替换了一个匹配项,又保留了原句子的其他内容和标点。
  3. 边界处理:增加了交集为空的判断,避免无匹配时出现索引错误。

用你给出的示例输入测试:
输入:"I would like some raisins and strawberries."
经过.title()转换后变为:"I Would Like Some Raisins And Strawberries."
代码会替换最后一个匹配的Strawberries,最终输出:"I Would Like Some Raisins And Brussels Sprouts."

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:39:27