2014-07-09 1 views
2

이 코드 :LXML 요소 부울 체크

from lxml.html import fromstring, tostring 

s = '<span class="left">Whatever</span>' 
e = fromstring(s) 
print(tostring(e)) 
print(bool(e)) 

출력 :

<span class="left">Whatever</span> 
False 

이유는 무엇입니까? 이 클래스에서 부울 검사가 작동하는 방법은 무엇입니까? 관련 문서 나 코드를 알려주십시오. 이것이 내가 당신의 코드로 무엇을 얻을 lxml 3.3.5

+0

'not not ""'는 거짓이고'not not "something"'은 True입니다. – daouzli

답변

0

를 사용

PS
임 ...

>>> print(bool(e)) 
__main__:1: FutureWarning: The behavior of this method will change in future ve 
sions. Use specific 'len(elem)' or 'elem is not None' test instead. 
False 
>>> e 
<Element span at 0x2db85a0> 
>>> 

들은 __bool__ 방법에 과부하가 꽤 명확 보인다 어떻게해야 당신에게 실제로 확인해보십시오 ...

1

XML과 HTML은 원시 파이썬 데이터 구조에 완벽하게 매핑되지 않습니다. 요소 객체가 True인지 False인지를 결정하는 모호하지 않은 방법은 없습니다.

요소를 얻지 못했는지 알고 싶다면 None과 비교하십시오. 예컨대 :

element is None 

당신이 당신의 요소에 자식 노드가 있는지 여부를 알고 싶은 경우에, len를 사용합니다. 예 :

len(element) > 0