2017-09-01 47 views
2
有道

我使用BeautifulSoup解析HTML,我經常發現我自己用下面的代碼:多檢查「無」 - 這將是在Python

result.find("some_tag").attrs['some_attribute'] 

什麼是正確的方法驗證find方法是否沒有返回None並且還檢查沒有嵌套的「if」語句的屬性中是否有這樣的鍵?

感謝

回答

1

一行答案

attr_val = result.find('some_tag').attrs.get('some_attr', None) if result.find('some_tag') else None 

我用get方法attrs字典得到一個值,如果它存在,否則無。

0

我會將它分成2份支票 - 如果result.find()返回None,並且如果有some_attribute

find_result = result.find("some_tag") 
if find_result: 
    try: 
     find_result.attrs["some_attribute"] 
    except KeyError as e: 
     print("some_attribute not found!") 
+0

謝謝,但它是我試圖避免的代碼 – Zaky