【发布时间】:2015-09-03 18:59:11
【问题描述】:
我需要搜索大约 10M 小 (5-10K) XML 文档以查找两个标签的文本内容。标签并不总是出现在树中的同一个位置,它们也根本不总是出现在文档中。
澄清一下,如果我有这样的文件:
<a>
<b>
<c>
hello
</c>
<d>
goodbye
</d>
</b>
<e>
<c>
howdy
</c>
<g>
nope
</g>
</e>
</a>
<d>
salutations
</d>
我需要从 c 和 d 标签中提取文本信息,我会得到
hello goodbye howdy salutations
我目前正在使用xml.etree.ElementTree.findall('.//c'),但它的运行速度很慢。有没有更快的方法来找到这些标签?我应该使用 XML 解析库吗?
我使用的是 Python 2.7 和 xml.etree.ElementTree。
【问题讨论】:
-
有多慢才是真正的慢,你希望它走多快?
-
标签和你的例子一样简单吗?如果他们只是
<something>this is the text you want</something>,我会推荐一个正则表达式。 -
@Thecheater887 哦,无论如何它并不慢。在过去的 75 分钟内,我浏览了大约 200 万份文档。我只是怀疑有更快的方法,如果是这样的话,我想加快这家伙的速度,只是知道如何更好地处理这种情况。
-
@porglezomp 标签具有属性,但这在正则表达式中肯定是更易于管理的。你认为这会比 xml 库更快?
-
非常感谢您的检查,@Thecheater887。仅供参考,走正则表达式路线会带来巨大的速度提升。我的意思是令人震惊的速度提升。