我在我的项目中使用正则表达式,并且有一个这样的数组:
myArray = [
r"right",
r"left",
r"front",
r"back"
]
现在我想查看字符串,例如
message = "right left front back"
在这个数组中有多个匹配,我的目的是只有当只有一个单词匹配其中一个数组时才有一个if。
我尝试了很多东西,比如这个
if any(x in str for x in a):
但是我从来没有限量使用它。
答案 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')