2013-05-22 16 views
0

獲取一個布爾我想一個布爾值分配給該opertions:從HTML表達的Python

soup = BeautifulSoup(page) 
x = soup.find('tr') 
y = x.findAll('td') 
left = y[0] 

如果assert('blah'in left['class'])也是如此 - 這意味着有左側有一個名爲「嗒嗒」類,然後 return true

+0

您的意思是y = x.find('td')?你沒有使用x的值。 – svk

回答

0

順便說一句,你已經使用find而不是find_all,所以沒有必要索引中的第一reuslt在y[0]

soup = BeautifulSoup(page) 
x = soup.find('tr') 
y = x.find('td', attrs={'class': 'blah'}) 
return len(y)>0 # or assert len(y)>0 
+0

有沒有辦法專門使用'assert'? –

+0

@JamesHallen只是用'assert'替換'return' – chenaren

+0

@JamesHallen它聽起來像你對什麼斷言的含義感到困惑,因爲你在你的問題中說你想要_return_真。 – svk

0

假設left有鑰匙class然後

return True if 'blah' in left['class'] else False 

如果這個假設並不總是成立,你可以用

return True if 'class' in left and 'blah' in left['class'] else False 

但事情變得越來越難看。

如果你使用assert,當這個條件不成立時(並且沒有返回任何值),你將會拋出一個異常。如果那是你真正想要的;

assert('blah' in left['class']) 
return True 

會評估你的assert,要麼拋出異常,或者進度和返回True。這相當於;

if 'blah' in left['class']: 
    return True 
else: 
    raise AssertionError('blah not in left["class"]') 
+0

如果我使用'如果左「嗒嗒」 [「類」]: 返回True 其他:(「左[‘類’]等等不」) 提高Asse田'會有一萬阿英,蔣達清,如果離開了[0]不包含類屬性。我得到一個錯誤'返回self._getAttrMap()[key] KeyError:'class'' –

+0

是的,這確實假設'left'具有key'class'。如果不確定,請嘗試使用'assert'然後按'return True'記住你永遠不會返回'False'(或上面的替代單行) – danodonovan

+0

但是,當我嘗試執行' assert('prodSpecAtribute'在左邊['class'])'當左邊的內容不是class屬性時,對吧? –