日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iterparse中的events参数start和end的用法

發布時間:2025/4/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iterparse中的events参数start和end的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡而言之,events中選取 start 或者 end 事件,主要在于自己打算:

“首先訪問外層 elements” or

“首先訪問內層 elements”

舉例如下,對于如下 xml :

<level-1><level-2-1><level-3-1></level-3-1><level-3-2></level-3-2></level-2-1><level-2-2><level-3-3></level-3-3><level-3-4></level-3-4></level-2-2> </level-1>

如果選取 start 事件來parse:

from lxml.etree import iterparsewith open('foo.xml', 'r') as xml:for event, element in iterparse(xml, events=['start']):print(element.tag)

則獲得“首先訪問外層 elements”的結果:

level-1 level-2-1 level-3-1 level-3-2 level-2-2 level-3-3 level-3-4

如果選取 end 事件來parse:

with open('foo.xml', 'r') as xml:for event, element in iterparse(xml, events=['end']):print(element.tag)

則獲得“首先訪問內層 elements”的結果:

level-3-1 level-3-2 level-2-1 level-3-3 level-3-4 level-2-2 level-1

以這樣的一個xml為例

<?xml version="1.0"?> <data><country name="china"><rank updated="yes">2</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="hangkong"><rank updated="yes">5</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank updated="yes">69</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country> </data>

如果我把參數改成events=(‘start’,’end’),結果是這樣的:

<Element 'data' at 0x5d11828> ('start', <Element 'data' at 0x5d116a0>) ('start', <Element 'country' at 0x5d11c88>) ('start', <Element 'rank' at 0x5d11cc0>) ('end', <Element 'rank' at 0x5d11cc0>) ('start', <Element 'year' at 0x5d11d30>) ('end', <Element 'year' at 0x5d11d30>) ('start', <Element 'gdppc' at 0x5d11d68>) ('end', <Element 'gdppc' at 0x5d11d68>) ('start', <Element 'neighbor' at 0x5d11da0>) ('end', <Element 'neighbor' at 0x5d11da0>) ('start', <Element 'neighbor' at 0x5d11dd8>) ('end', <Element 'neighbor' at 0x5d11dd8>) ('end', <Element 'country' at 0x5d11c88>) ('start', <Element 'country' at 0x5d11e10>) ('start', <Element 'rank' at 0x5d11e48>) ('end', <Element 'rank' at 0x5d11e48>) ('start', <Element 'year' at 0x5d11e80>) ('end', <Element 'year' at 0x5d11e80>) ('start', <Element 'gdppc' at 0x5d11eb8>) ('end', <Element 'gdppc' at 0x5d11eb8>) ('start', <Element 'neighbor' at 0x5d11ef0>) ('end', <Element 'neighbor' at 0x5d11ef0>) ('end', <Element 'country' at 0x5d11e10>) ('start', <Element 'country' at 0x5d11f28>) ('start', <Element 'rank' at 0x5d11f60>) ('end', <Element 'rank' at 0x5d11f60>) ('start', <Element 'year' at 0x5d11f98>) ('end', <Element 'year' at 0x5d11f98>) ('start', <Element 'gdppc' at 0x5d11fd0>) ('end', <Element 'gdppc' at 0x5d11fd0>) ('start', <Element 'neighbor' at 0x43a3390>) ('end', <Element 'neighbor' at 0x43a3390>) ('start', <Element 'neighbor' at 0x43a3cc0>) ('end', <Element 'neighbor' at 0x43a3cc0>) ('end', <Element 'country' at 0x5d11f28>) ('end', <Element 'data' at 0x5d116a0>)

start就是一個標簽的開始,end就是一個標簽的結尾,當你用(‘start’,‘end’)同時作為參數時,那iterparse在見到data的時候會產生一個start 的elem,見到data會產生一個‘end’elem

P.S. events 參數的默認值為[‘end’],即默認首先訪問內層elements。

使用iterparse返回的是一個可迭代的(event,element)元組流

注:本文內容源自優達學城論壇,感謝andy.li和bbikks的精彩回答。我的優達學城優惠碼是:C7B2877A

關于iterparse的詳細介紹可以參考此文檔:iterpasrse Function

關于ElementTree介紹可以參考此鏈接:ElementTree官方文檔翻譯

總結

以上是生活随笔為你收集整理的iterparse中的events参数start和end的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。