Python使用多个术语来查找

Python使用多个术语来查找,python,list,Python,List,在本例中,如何从textsource中找到多个关键字?我想找aaa、bbb或ccc if str(textsource).find("aaa") == -1: 谢谢。使用正则表达式: import re if not re.search("aaa|bbb|ccc", str(textsource)): 查找多个搜索词的索引: >>> [textsource.find(kw) for kw in ["aaa", "bbb", "ccc", "ddd"]] [0, 3, 6,

在本例中,如何从textsource中找到多个关键字?我想找aaa、bbb或ccc

if str(textsource).find("aaa") == -1:

谢谢。

使用正则表达式:

import re

if not re.search("aaa|bbb|ccc", str(textsource)):
查找多个搜索词的索引:

>>> [textsource.find(kw) for kw in ["aaa", "bbb", "ccc", "ddd"]]
[0, 3, 6, -1]
将这些结果转换为表示“已找到”或“未找到”的布尔值:

返回一个布尔值,指示是否未找到多个搜索项中的任何一个

>>> any(textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc", "ddd"])
True
为了便于比较,以下是找到所有搜索词时的结果:

>>> [textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc"]]
[False, False, False]
>>> any(textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc"])
False
只需简单地使用以下方法即可:

如果有(sub-in-subs的子串):
或者更准确地说,针对您的情况:

如果没有(sub-in-textsource表示sub-in(“aaa”、“bbb”、“ccc”):
也可通过以下方式实现:

if all(sub not in textsource表示sub in(“aaa”、“bbb”、“ccc”):

不是任何(…)通常比
所有(不是…
)更受欢迎吗?@JosephSible经过一段时间的研究,我想不出任何一种方法都有什么好处。看起来他们都会做完全相同的事情,执行相同数量的“步骤”。我错过了什么?仍然更新了我的答案,谢谢。最大的原因是它更容易思考(IMO)。然而,如果你在计算微优化的“步骤”,我认为
not any
更好,因为它只对每个元素执行一个
not
而不是
not
。@JosephSible,我不太熟悉Python的底层实现细节,但是我相信
x不在y
notx在y
有点不同,因为它不一定执行另一个
not
操作。它与中的
基本相同,具有反向输出。你知道这是不是真的吗?我不知道。然而,简单性的论点仍然存在。在
any(…)
中看到列表理解会带来伤害。只使用代码的答案被认为是低质量的:确保提供一个解释,说明代码的作用以及它如何解决问题。如果你能在你的文章中添加更多的信息,这将有助于询问者和未来的读者。另请参见解释完全基于代码的答案:
>>> any(textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc", "ddd"])
True
>>> [textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc"]]
[False, False, False]
>>> any(textsource.find(kw) == -1 for kw in ["aaa", "bbb", "ccc"])
False
textsource = 'aaa bbb ccc ddd'
kw_list = ['aaa', 'bbb', 'ccc']
for word in kw_list:
    if textsource.find(word) != -1:
        print('keyword:'+ word + ' found at pos:'+ str(textsource.find(word)))
    else:
        print('keyword:'+ word + ' not found in the textsource')