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

如何使用rfind方法筛选出以'ing'结尾的单词?

如何使用rfind方法筛选出以'ing'结尾的单词?

嘿,我来帮你排查下问题所在~

你当前的代码有两个核心问题:

  • rfind() 是用来查找普通子串最后出现位置的方法,它完全不支持正则表达式。你写的 x.rfind(r'\b(\w+ing)\b') 是在整个输入字符串里找 \b(\w+ing)\b 这个字面文本,显然你的输入里没有这个内容,所以它会返回 -1。而Python的if判断里,非零值(包括-1)都会被视为True,这就导致所有单词都被打印出来了。
  • 你应该针对每个拆分后的单词(也就是循环里的y)做检查,而不是拿着整个输入字符串x去判断。

既然要求用rfind()来实现,我们可以这样修改代码:

x = str(input("Enter some random words: "))

for y in x.split():
    # 查找'ing'在当前单词最后出现的位置
    ing_position = y.rfind('ing')
    # 如果找到'ing',且位置刚好是单词的结尾(因为'ing'是3个字符,所以位置等于单词长度减3)
    if ing_position != -1 and ing_position == len(y) - 3:
        print(y, end=' ')

当你输入 How are you doing and hows it going 时,这段代码就会输出 doing going,完全符合你的需求。

简单拆解下逻辑:

  • 对每个拆分后的单词,用rfind('ing')定位'ing'最后出现的索引位置。
  • 如果这个位置不等于-1(说明找到了'ing'),并且这个位置刚好是单词长度减3(说明'ing'在单词的最后三位,也就是结尾),就打印这个单词。

如果后续不需要局限于rfind(),其实用y.endswith('ing')会更简洁直观,但既然要求用rfind(),上面的写法就完全能解决问题啦~

备注:内容来源于stack exchange,提问作者Afroboy23

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 10:19:06