如果string包含几个子串Python之一

时间:2014-01-28 13:21:27

标签: python string if-statement

与此处类似:Does Python have a string contains substring method?此问题仅处理字符串中的一个子字符串,我想测试其中一个。

类似的东西:

if 'AA' or 'BB' or 'CC' not in string:
    print 'Nope'

但是,如果我的测试字符串是:

string='blahblahAA'

if仍然计算为True并打印语句。我可能只是错误地理解语法,任何帮助都会受到赞赏。

谢谢!

2 个答案:

答案 0 :(得分:4)

使用any

>>> s = 'blahblahAA'
>>> any(x not in s for x in ('AA', 'BB', 'CC'))
True

您当前的代码相当于:

if ('AA') or ('BB') or ('CC' not in string)

由于'AA'Truebool('AA')True),因此总是评估为True

答案 1 :(得分:0)

您应该使用and而不是或声明。现在,你总是打印'Nope'如果其中一个子字符串不在您的字符串中。

在上面给出的示例中,您仍然可以打印“Nope'因为' BB'和' CC'不在字符串中,整个表达式的计算结果为真。

您的代码可能如下所示:

if ('AA' not in string) and ('BB' not in string) and ('CC' not in string):
    print 'Nope'