Python:子串存在

时间:2016-07-19 19:43:56

标签: python string list

我有一个HTML scraper,可以解析一组特定的网站,以获取所售产品的名称。如果产品在我们的白名单中,我们的处理方式与非白色产品的处理方式不同。 现在刮刀返回产品的全名。它可能是'Nike Air Jordan'或'Air Jordan by Nike'或'LunarEpic by Nike'等等,但Nike属于我们的白名单。 所以我现在正在做的很简单或检查:

>>> product_name = get_prod_name(url)
>>> if 'Nike' in product_name:
       do_process()

现在我们已经列出了这些列入白名单的产品,例如['Nike','Reebok','Adidas'......] 除了

之外,还有更好的方法来执行此检查
if 'Nike' in product_name or 'Reebok' in product_name or 'Adidas' in product_name

? TX,克雷格

2 个答案:

答案 0 :(得分:4)

您可以使用内置any功能:

products = ['Nike', 'Reebok', 'Adidas', ...]
if any(product in product_name for product in products):
    ...

另一种选择是使用正则表达式:

regex = '|'.join(re.escape(product) for product in products))
if re.search(regex, product_name):
   ...

但这几乎肯定是矫枉过正的......

答案 1 :(得分:2)

您可能正在寻找具有生成器理解的any()函数

if any(product in product_name for product in ['Nike', 'Reebok', 'Adidas']):