确定一个字符串是否包含某个单词

16
在Python中,以下是给定上下文的语句语法:
words = 'blue yellow'

如果有一个if语句,用来检查words是否包含单词"blue",应该怎么写呢?例如:

if words ??? 'blue':
    print 'yes'
elif words ??? 'blue':
    print 'no'

如果文本中包含“蓝色”,则输出“是”。否则,输出“否”。


3
如果words中包含"blue" - Ashwini Chaudhary
4
你想让“abluent”打印“是”还是“否”? - DSM
3
@DSM,我正在苦思冥想一个没有“蓝色”作为明显前缀或后缀的单词;)-不错! - Jon Clements
@DSM 我认为其他问题已经回答了,但还是谢谢。 - John Doe Smith
4个回答

29
words = 'blue yellow'

if 'blue' in words:
    print 'yes'
else:
    print 'no'

编辑

我刚刚意识到“nightly blues”会包含“blue”,但不作为一个完整的单词。如果这不是您想要的,请拆分单词列表:

if 'blue' in words.split():
    …

所以基本上你只需要翻转它并放进去即可。 - John Doe Smith
那现在怎么办? - salezica
咳咳,你编辑过后我重新阅读了一遍,发现不是那么回事,但是我会记住的。哦对了,我之前写的评论在我脑海里是有意义的,算了别管它了。 - John Doe Smith
我希望它能说如果它包含在里面的话。所以我只需要写if 'blue' in words。对吗? - John Doe Smith

6
你可以使用 in 或进行显式检查:
if 'blue ' in words:
    print 'yes'

或者
if words.startswith('blue '):
    print 'yes'

编辑: 只有在句子不以“blue”结尾时,这两种方法才有效。 要检查这一点,可以像之前的答案中建议的那样操作。
if 'blue' in words.split():
    print 'yes'

6
您也可以使用正则表达式regex

\bblue\b只会在找到确切的单词'blue'时返回True,否则返回False

In [24]: import re

In [25]: strs='blue yellow'

In [26]: bool(re.search(r'\bblue\b',strs))
Out[26]: True

In [27]: strs="nightly blues"

In [28]: bool(re.search(r'\bblue\b',strs))
Out[28]: False

嗯...谢谢,但看起来有点复杂,哈哈。我想我还是坚持使用if 'blue' in words吧,不过回答很好! - John Doe Smith

2
这个最简单的方法可能是以下步骤:
words = set('blue yellow'.split())
if 'blue' in words:
    print 'yes'
else:
    print 'no'

如果你的单词列表非常庞大,那么将 words.split() 包装在 set 中可以提高速度,因为测试集成员比测试列表成员更加计算效率高。


1
创建集合本身就是一个O(N)操作,所以仅当 OP 想要在同一列表上多次检查成员资格且列表很大时,这才有所帮助。 - Ashwini Chaudhary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接