[Python] 判斷 XML Element 是否存在不能用 "if element:"

[Python] 判斷 XML Element 是否存在不能用 "if element:"

今天遇到一個詭異的問題…有一個 XML 檔案長像下面這樣:

<xml>
<data>xxx</data>
</xml>

 

用 python 讀取之後,用下面的程式判斷 data 是否存在,

結果居然印出了 not exist:

>>> import xml.etree.cElementTree as ET
>>> root = ET.fromstring(open("test.xml", "r").read())
>>> print "exist" if root.find("data") else "not exist"
not exist

 

真是詭異了,data 這個元素明明就存在呀?!

……

查了一下 xml.etree.ElementTree — The ElementTree XML API 才真相大白,

原來「元素不存在」或者是「元素下面不包含任何的子元素」的話,bool() 都會算是 False…

因此想正確判斷元素是否存在,得用 is not None 來判斷才行:

>>> print "exist" if root.find("data") is not None else "not exist"
exist

 

發現要熟悉一個語言,還是得花很多的時間來踩雷才行呀 =_=…

 

 

(本頁面已被瀏覽過 287 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料