结合多个成员资格测试

时间:2015-06-25 19:26:41

标签: python string if-statement conditional-statements

要检查字符串是否包含子字符串,可以使用“in”,如下所示:

if "abc" in str:
    print("yay")

要检查字符串是否包含两个子字符串中的一个,可以使用“或”,如下所示:

if "abc" in str or "def" in str:
    print("yay")

我的问题是python是否有办法将其简化为:

if "abc" or "def" in str:
    print("yay")

我知道这不会按预期工作,因为它总会评估为真。 (Python将检查两个语句中的至少一个,

  • “abc”
  • str中的“def”

为真,“abc”将始终评估为真)

话虽如此,无论如何都要检查除此之外的这种情况,相当冗长,方法:

if "abc" in str or "def" in str:
    print("yay")

3 个答案:

答案 0 :(得分:4)

if any(word in sentence for word in {"abc", "def"}):
    print("yay")

答案 1 :(得分:4)

将它们放入数组并执行:

if any(x in word for x in a):

这里已经回答了Check if multiple strings exist in another string

答案 2 :(得分:2)

如果您的问题是否有办法,请检查给定的字符串列表中是否存在任何字符串。我们可以使用any()函数和generator expressions

示例 -

>>> s = "Hello World Bye Abcd"
>>> l = ["Hello","Blah"]
>>> l1 = ["Yes","No"]
>>> any(li in s for li in l)
True
>>> any(li in s for li in l1)
False