我有一个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,克雷格
答案 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']):