检查字符串是不是包含Python中数组中的多个元素
Posted
技术标签:
【中文标题】检查字符串是不是包含Python中数组中的多个元素【英文标题】:Check if string contains more than one element from array in Python检查字符串是否包含Python中数组中的多个元素 【发布时间】:2016-06-17 06:09:14 【问题描述】:我在我的项目中使用正则表达式,并且有一个这样的数组:
myArray = [
r"right",
r"left",
r"front",
r"back"
]
现在我要检查字符串,例如
message = "right left front back"
在此数组中有多个匹配项,我的目的是仅当只有一个单词与数组中的一个匹配时才使 if 为真。
我尝试了很多东西,比如这个
if any(x in str for x in a):
但我从不使用有限的数量。
【问题讨论】:
matches = [x for x in a if x in str]
怎么样。然后,您可以使用len(matches)
检查匹配数。
Python: how to determine if a list of words exist in a string的可能重复
@Michal Frystacky 没有遇到过那个,即使我之前检查了很多,*** 还是那么大!谢谢!
@ThaoD5 没问题,希望对你有帮助!
【参考方案1】:
matches = [a for a in myArray if a in myStr]
现在检查matches
的len()
。
【讨论】:
【参考方案2】:您可以在此处使用sum
。这里的诀窍是True
在找到sum
时计算为1
。因此,您可以直接使用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
【讨论】:
谢谢,正是我需要的,if 语句示例,完美 ;-)【参考方案3】:any(x in message for x in myArray)
如果myArray
中的至少一个 字符串在message
中找到,则评估为True
。
sum(x in message for x in myArray) == 1
如果在myArray
中找到恰好一个字符串,则评估为True
。
【讨论】:
【参考方案4】:如果您正在寻找最快的方法之一,请使用集合的交集:
mySet = set(['right', 'left', 'front', 'back'])
message = 'right up down left'
if len(mySet & set(message.split())) > 1:
print('YES')
【讨论】:
以上是关于检查字符串是不是包含Python中数组中的多个元素的主要内容,如果未能解决你的问题,请参考以下文章