Eri*_* H. 2 python performance parsing elementtree partial
我有一个大的 XML 文件,它的结构大致如下(按此顺序):
<document>
<interesting_part>
...
</interesting_part>
<foo>
...
60000 lines
...
</foo>
</document>
Run Code Online (Sandbox Code Playgroud)
我的程序是:
from xml.etree import ElementTree as et
f=open(path_f)
tree=et.parse(f)
f.close()
# retreive infos from tree...
Run Code Online (Sandbox Code Playgroud)
我只对文件中的前几个块感兴趣,但性能很低,因为 et.parse() 加载了整个文件。
如何只加载文件直到</interesting_part>?
我想到了这样的事情:
class My_Parser(et.XMLParser):
????
my_parser = My_Parser()
tree=et.parse(f, my_parser)
Run Code Online (Sandbox Code Playgroud)
提前谢谢你,埃里克。
改用该iterparse()函数,并在获得所需内容时停止迭代:
for event, element in et.iterparse(f):
if element.tag == 'interesting_part':
# `element` is the complete <interesting_part> element, with children
# process it
break # ends parsing.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |