試圖在不添加buku try/except語句的情況下實現簡單的錯誤處理。將方法調用作爲變量傳遞給錯誤處理函數
我的if_error函數試圖模擬excel中的iferror(value,value_if_error)公式。
If the value (another formula) is valid,
return its resulting value
else
return value_if_error
I /如何傳遞一個方法調用從beautifulsoup對象(湯)與參數,以通用的嘗試,除了功能?
- 試過lambda,但沒有足夠的理解,使其與參數&湯的工作。
- 看着偏,但沒有看到如何會叫美麗的湯方法
- 看着this 卻沒有看到湯將如何傳遞?
我的代碼:
def if_error(fn,fail_value):
try:
value = fn
except:
value = fail_value
return value
def get_trulia_data(soup):
d = dict()
description = if_error(soup.find('div', attrs={'class': 'listing_description_module description'}).text,'')
sale_price = if_error(soup.find('div', attrs={'class': 'price'}).text,'0')
sale_price = re.sub('[^0-9]', '', sale_price)
details = if_error(soup.find('ul', attrs={'class': 'listing_info clearfix'}),'')
bed = if_error(soup.find('input', attrs={'id': 'property_detail_beds_org'})['value'],'')
bath = if_error(soup.find('input', attrs={'id': 'property_detail_baths_org'})['value'],'')
...
return d
錯誤:
Traceback (most recent call last):
data_dict = get_trulia_data(url)
description = if_error(soup.find('div', attrs={'class': 'listing_description_module description'}).text,'')
AttributeError: 'NoneType' object has no attribute 'text'
的soup.find方法保持達到if_error功能之前發射。我怎樣才能解決這個問題?
您可能已經知道這一點,但使用裸「except」是一種危險的做法,因爲它可以捕捉到幾乎所有可能的問題。您應該提供您願意轉換爲'if_error'值的異常。 –