由於最近需要使用python處理xml資料,因此到網上找了些資料學習了下。
最新學習的是python的xml.dom.minidom模組,按照資料上的說法,特地在python命令列環境驗證了一下:
執行之後卻發現xml.dom.minidom無法獲取xml節點之間的文字值,**如下:
>>> test = "14
">>> tdoc = xml.dom.minidom.parsestring(test)
w=tdoc.getelementsbytagname('b')
>>> node=w[0]
>>> node.nodevalue
網上的資料和python官方文件都說是用 node.nodevalue獲取節點的值,但是上述**卻輸出為空。注意到node.nodevalue只對text_node型別的節點有效,因此檢視一下節點b的型別:
>>> node.nodetype
11代表element_node節點型別。於是在網上和官方文件找了半天,也沒有獲取到什麼有用的資訊。不得以,只好看看其他的模組。在網上的另一篇文章中
對比了python處理xml的模組效能優勢,於是選擇了 celementtree 模組,測試**如下:
>>> import celementtree
>>> dir(celementtree )
['comment', 'element', 'elementpath', 'elementtree', 'pi', 'processinginstruction', 'qname', 'subelement', 'treebuilder', 'version', 'xml', 'xmlid', 'xmlparser', 'xmlparsererror', 'xmltreebuilder', '__doc__', '__file__', '__name__', '__version__', 'dump', 'fromstring', 'iselement', 'iterparse', 'parse', 'tostring']
>>> test = "1wewew
">>>
>>> dom = celementtree.parse(test)
traceback (most recent call last):
file "", line 1, in ?
file "", line 45, in parse
file "", line 22, in parse
ioerror: [errno 2] no such file or directory: "1wewew
">>> dom = celementtree.fromstring(test)
>>> root = dom.getroot()
traceback (most recent call last):
file "", line 1, in ?
attributeerror: getroot
>>> type(dom)
>>> dir(dom)
>>> dom.find('b')
>>> w=dom.find('b')
>>> w.text
'1'>>> test = "1wewew"
>>> dom = celementtree.fromstring(test)
>>> dom.find('b')
>>> w=dom.find('b')
>>> w.text
'1'>>> w=dom.find('b')
>>> w.text
'1'>>> w=dom.findall('b')
>>> type(w)
>>> w
[, ]
>>> w[1].text
'wewew'
>>> c=dom.find('c')
>>> dir(c)
>>> c.items()
[('id', '1')]
>>> c.get('id')
'1'>>>
不過, celementtree.fromstring(test)有乙個小小的陷進,當你要查詢的節點是root節點是,你無法使用dom.find(node)的方式獲取節點,而且也無法判斷當前節點是否是自己所需要的節點,乙個變通的方法:
str(dom).split(' ')[1][1:-1] == node:
可以通過判斷上述**的true和false來獲取
使用Python處理XML
很久沒有寫博文了,也很久沒有碰python了。剛好工作需要,小小動手了下。因為是在新機器上,所以就直接裝了python 3,反正以後也是要適應,不如早點。在使用python處理xml的問題上,首先遇到的是編碼問題。python並不支援gb2312,所以面對encoding gb2312 的xml檔案...
python 處理xml檔案
python 處理xml檔案 最近基因注釋需要查閱文獻是否報道過。由於基因很多,想了乙個辦法。ncbi上每個蛋白有關的登入號下會有文獻的題目。根據序列比對結果,然後調取對應的文獻。首先獲取小麥族 147389 所有的199754條蛋白序列,截止日期是17 5 22.末尾 python try imp...
使用Python處理XML
很久沒有寫博文了,也很久沒有碰python了。剛好工作需要,小小動手了下。因為是在新機器上,所以就直接裝了python 3,反正以後也是要適應,不如早點。在使用python處理xml的問題上,首先遇到的是編碼問題。python並不支援gb2312,所以面對encoding gb2312 的xml檔案...