2013-03-13 114 views
3

在Python中,什么是一个语句的语法,考虑到以下方面:确定是否一个字符串包含一个字

words = 'blue yellow' 

将是一个if语句来检查,看看是否words包含单词“蓝“?例如,

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

在英语中,“如果单词包含蓝色,则表示是,否则,打印否。”

+3

'if“blue”in words'。 – 2013-03-13 00:39:02

+4

你想“洗手”打印“是”还是“否”? – DSM 2013-03-13 00:41:37

+3

@DSM我很努力地想到一个没有蓝色作为显而易见的前缀或后缀的单词;) - 很好的一个! – 2013-03-13 00:44:46

回答

5
words = 'blue yellow' 

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

编辑

我刚刚意识到nightly blues将包含blue,而不是作为一个整体词。如果这不是你想要的,分裂的词表:

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

所以基本上你只需要翻转它并投入。 – 2013-03-13 00:41:18

+0

那么现在是什么? – slezica 2013-03-13 00:43:14

+0

我的阅读很好,在编辑之后就很糟糕,那不是那种情况,但是生病时请牢记这一点。哦,我写的评论在我心中对这个笑声有所了解。 – 2013-03-13 00:44:18

2

您可以使用in或做明确的检查:

if 'blue ' in words: 
    print 'yes' 

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

编辑: 那些2只将如果句子不以'蓝色'结束,则工作。 要检查的是,你可以做什么,以前的答案的一个建议

if 'blue' in words.split(): 
    print 'yes' 
3

您还可以使用regex

\bblue\b将返回True只有当它能够找到确切的词'blue',否则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 
+0

嗯...感谢但似乎复杂的大声笑。我认为病态只是坚持'如果'蓝''的话',但很好的答案! – 2013-03-13 00:53:26

0

做到这一点,最简单的方法可能是以下几点:

words = set('blue yellow'.split()) 
if 'blue' in words: 
    print 'yes' 
else: 
    print 'no' 

如果你的话名单实在是巨大的,你会在包装set作为words.split()测试组成员资格是获得一个速度增加在计算上比测试列表成员更有效。

+1

集合的创建本身就是一个“O(N)”操作,所以这只有在OP要在同一个列表中多次检查成员并且列表很大时才会有帮助。 – 2013-03-13 01:09:46

相关问题