2016-07-19 8 views
1

私は、特定のサイトのセットを解析して、販売されている製品の名前を取得するHTMLスクレーパーを持っています。製品がホワイトリストに登録されている場合、製品はホワイトリストに記載されていない製品とは異なる方法で処理されます。 スクレイパーは製品の全体名を返します。 「Nike Air Jordan」や「Air Jordan by Nike」や「LunarEpic by Nike」などがありますが、Nikeはホワイトリストに記載されています。 それでは、私が今やっていることは、単純なまたはチェックです:Python:部分文字列の存在

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

を今、私たちは、このような[「ナイキ」、「リーボック」、「アディダス」などこれらのホワイトリストに登録製品のリストを持っています... ]

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

以外は、このチェックを実行する良い方法は、ありますか? のTx、クレイグ

答えて

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): 
    ... 

しかし、それはほぼ確実にやり過ぎだ...

2

any()関数をジェネレータの理解度で探している可能性があります

if any(product in product_name for product in ['Nike', 'Reebok', 'Adidas']): 
関連する問題