2017-10-27 17 views
0
def extract_info(text, price): 
    company_name = ['BMW','AUDI','MERCEDES','TOYOTA'] 
    car_type = ['Saloon', 'Hatchback','Sedan'] 
    if any(word in text for word in company_name): 
     for word in company_name: 
     matchWord = text.split() 
     if word in matchWord: 
      return (word) 
    elif any(word in text for word in car_type): 
     for word in car_type: 
     matchWord = text.split() 
     if word in matchWord: 
      return (word) 

    else: 
     productType = re.search('car', text) 
     if productType is not None: 
     productvalue = productType.group(0) 
     return (productvalue) 

    numDoor = re.search('[0-9]-door',text) 
    if numDoor is not None: 
     matchDoor = numDoor.group(0) 
     return (matchDoor) 
    else: 
    return ('No match') 

値を返そうとしていますが、すべての値を取得できませんでした。私はそれらを印刷しながら私の出力を得ています。戻り値

私は、文字列の文字列が正規表現と単語や試合のいずれかを取得する場合、コードがフェッチされ

「安全で低メンテナンス、5ドア車」を使用していました。

+2

の書式を使用すると、コードサンプルに貼り付けた際に破損持っているようだ - それはブロックの一部だとして、例えば、2行目は間違いなく、タブが必要になります。あなたは編集できますか? –

+0

このコードにはreturn文がありません。 –

+0

@DanielRoseman:値が返ってこなかったので – ragrwl

答えて

0

でprint文を置き換えることができます。だから、18行目の後に:

return productType 

は、関数の最後のリターンを返し、それがライン18ライン19を使用すると、結果の残りの部分を取得されていません理由です実行されていない後にあなたのコードの後に​​実行することはありません。あなたが出力の束を返す場合は、リストに追加するかdictを使用して別の結果を保存し、最後にその変数を返し、必要に応じて変数データを使用します。

例:

import re 
def extract_info(text, price): 
    final_output={} 
    company_name = ['BMW','AUDI','MERCEDES','TOYOTA'] 
    car_type = ['Saloon', 'Hatchback','Sedan'] 
    if any(word in text for word in company_name): 
     for word in company_name: 
      matchWord = text.split() 
      if word in matchWord: 
       final_output['word']=word 
    elif any(word in text for word in car_type): 
     for word in car_type: 
      matchWord = text.split() 
      if word in matchWord: 
       final_output['word']=word 
    else: 
     productType = re.search('car', text) 
     if productType is not None: 
      final_output['product_type']=productType.group(0) 
    numDoor = re.search('[0-9]-door', text) 
    if numDoor is not None: 
     matchDoor = numDoor.group(0) 
     final_output['matchdoor']=matchDoor 
    else: 
     final_output['matchdoor']='None' 

    return final_output 

print(extract_info("A low maintenance, 5-door car that's safe",23)) 
0

関数は一度しか返すことができますので、あなたはリターン

if numDoor is not None: 
    matchDoor = numDoor.group(0) 
    return matchDoor 
else: 
    return 'No match' 
+0

私は上記の値にも戻りたい – ragrwl