检查字符串是否包含Python中数组中的多个元素

时间:2016-03-03 18:37:47

标签: python arrays regex string list

我在我的项目中使用正则表达式,并且有一个这样的数组:

myArray = [
    r"right",
    r"left",
    r"front",
    r"back"
]

现在我想查看字符串,例如

message = "right left front back"

在这个数组中有多个匹配,我的目的是只有当只有一个单词匹配其中一个数组时才有一个if。

我尝试了很多东西,比如这个

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

但是我从来没有限量使用它。

4 个答案:

答案 0 :(得分:3)

您可以在此处使用sum。这里的诀窍是True在找到1时计算为sum。因此,您可以直接使用in

>>> sum(x in message for x in myArray)
4
>>> sum(x in message for x in myArray) == 1
False

if子句看起来像

>>> if(sum(x in message for x in myArray) == 1):
...     print("Only one match")
... else:
...     print("Many matches")
... 
Many matches

答案 1 :(得分:3)

matches = [a for a in myArray if a in myStr]

现在查看len()的{​​{1}}。

答案 2 :(得分:2)

any(x in message for x in myArray)

如果在True中找到myArray中的 至少一个 字符串,则评估为message

sum(x in message for x in myArray) == 1

如果在True中找到myArray中的 正好一个 字符串,则评估为message

答案 3 :(得分:2)

如果您正在寻找最快捷的方法之一,请使用集合的交集:

mySet  = set(['right', 'left', 'front', 'back'])
message = 'right up down left'

if len(mySet & set(message.split())) > 1:
    print('YES')