我有一个查询项列表,每个查询项都有一个与之相关联的布尔运算符,例如:
tom OR jerry OR desperate AND dan OR mickey AND mouse
好的,现在我有一个包含用户定义输入的字符串,inputStr
。你知道吗
我的问题是,在Python中,是否有方法确定用户定义的字符串是否包含“query”中的单词?你知道吗
我试过这个:
if ('tom' or 'jerry' or 'desperate' and 'dan' or 'mickey' and 'mouse') in "cartoon dan character desperate":
print "in string"
但它没有给出我所期望的结果。 如您所见,我不关心查询项是否有序,只关心它们是否在字符串中。你知道吗
这能做到吗?我是否遗漏了一些东西,比如可以帮助我实现所需功能的库?你知道吗
非常感谢你的帮助。你知道吗
我会使用正则表达式:
其中
s
是要搜索的字符串,l
是应该在s
中的单词列表。如果search函数不返回None
,那么就有一个匹配项。你知道吗不是您认为的意思,因为括号导致首先计算
or
和and
操作,例如:。。。所以你的
if
-子句的意思是if 'tom' in "cartoon dan character desperate"
。你知道吗你的意思可能是:
要检查列表中的任何单词是否在字符串中,请执行以下操作:
示例:
如果使用
re.search()
作为@jro suggested,那么不要忘记转义词以避免与regex语法冲突:上面的代码假定
query
除了包含的单词之外没有其他意义。如果它确实那么假设'AND'
绑定比'OR'
强,即'a or b and c'
意味着'a or (b and c)'
您可以检查字符串是否满足查询:上面的内容可以写得更简洁,但可读性可能较差:
示例
如果您想拒绝部分匹配,例如
'dan'
不应该匹配'danial'
,那么您可以代替word in string
可以使用re.search()
并添加'\b'
:相关问题 更多 >
编程相关推荐