0

我有一个字符串:

父亲吃了一根香蕉睡在一根羽毛上

我的部分代码如下所示:

...

if word.endswith(('ther')):
   print word

这打印feather,也Father

但我想修改它if condition,因此它不会将此搜索应用于句子的第一个单词。所以结果应该只打印feather

我试过了,and但没有用:

...

if word.endswith(('ther')) and word[0].endswith(('ther')):
   print word

这行不通。帮助

4

4 回答 4

6

您可以使用范围跳过第一个单词并将该endswith()函数应用于其余单词,例如:

s = 'Father ate a banana and slept on a feather'
[w for w in s.split()[1:] if w.endswith('ther')]
于 2013-08-13T09:18:22.347 回答
2

您可以构建一个正则表达式:

import re
re.findall(r'(\w*ther)',s)[1:]
['feather']
于 2013-08-13T09:28:41.903 回答
2

如果我正确理解您的问题,如果它是字符串中的第一个单词,您不希望它打印该单词。因此,您可以复制字符串并删除第一个单词。

我会引导你完成它。假设你有这个字符串:

s = "Father ate a banana and slept on a feather"

s.split()您可以通过运行并捕获该输出来拆分它:

['Father', 'ate', 'a', 'banana', 'and', 'slept', 'on', 'a', 'feather']

因此,如果您想要除第一个以外的所有单词,则可以使用 index [1:]。您可以通过加入空格来组合单词列表​​。

s1 = "Father ate a banana and slept on a feather" s2 = " ".join(s1.split()[1:])

该字符串s2现在将如下所示:

ate a banana and slept on a feather

您可以使用该字符串并像上面那样迭代单词。

于 2013-08-13T09:29:41.397 回答
1

如果您想避免制作临时字符串

[w for i, w in enumerate(s.split()) if w.endswith('ther') and i]
于 2013-08-13T09:45:44.287 回答