2016-07-19 22 views
1

Ich habe einen HTML-Scraper, der eine bestimmte Gruppe von Websites analysiert, um die Namen der verkauften Produkte zu erhalten. Wenn das Produkt auf unserer Whitelist steht, verarbeiten wir es anders als ein Produkt, das nicht auf der weißen Liste steht. Jetzt gibt der Abstreifer den vollständigen Namen des Produkts zurück. Es könnte "Nike Air Jordan" oder "Air Jordan von Nike" oder "LunarEpic von Nike" und so weiter sein, aber Nike ist in unserer Whitelist. Also, was ich tue jetzt ist ein einfaches oder überprüfen:Python: substring Existenz

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

Jetzt haben wir eine Liste dieser Whitelist Produkte erhielten, wie [ ‚Nike‘, ‚Reebok‘, ‚Adidas‘ ... ] gibt es einen besseren Weg, diese Prüfung durchzuführen, außer

if 'Nike' in product_name or 'Reebok' in product_name or 'Adidas' in product_name 

? Tx, Craig

Antwort

4

Sie können die eingebaute any Funktion:

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

Die andere Alternative ist regulären Ausdrücke zu verwenden:

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

Aber das ist fast sicher übertrieben ...

2

Sie können nach der any() Funktion mit einem Generator Verständnis

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