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门的安全车”
如果字符串得到任何单词或与regex匹配,则代码正在获取。
发布于 2017-10-27 11:49:49
因为函数只能返回一次。因此,在第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))发布于 2017-10-27 10:41:47
可以用返回替换print语句。
if numDoor is not None:
matchDoor = numDoor.group(0)
return matchDoor
else:
return 'No match'https://stackoverflow.com/questions/46973087
复制相似问题