计算几个xml文件中的出现次数

时间:2013-08-26 14:45:07

标签: python xml

有没有办法在几个xml文件中计算某种类型的所有身份? 这是我的意思的一个例子。所有xml文件都具有以下结构:

<data>
  <geo>
    <g type="mount" stid="s727" level="geo"/>
    <g type="bike" stid="g12" level="geo"/>
    <g type="lake" stid="g12432" level="geo"/>
    <g type="mount" stid="s0" level="geo"/>
  </geo>
</data>

我想要计算的是“s0”,“s”+任何数字,“s12”PER TYPE和g的3个类别的出现次数。 有人能告诉我这是如何工作的吗?当然,它只会在类别上作为示例 - 对我来说重要的是如何保存中间结果以及如何执行主函数(我想你将使用sys.arg来做 - 至少,这就是我要做的......)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我喜欢将LXML库用于此类事情。它有很好的记录。 这是我写的一个小脚本,这是我认为你想要的。如果您只关心计数而不关心项目,则可以增加值而不是附加到列表。此外,这只获取包含s的属性,但是可以很容易地修改以获得以s开头的值(如果这是你想要的)。

from lxml import etree
from StringIO import StringIO

parser = etree.XMLParser()
FileInstance = open('help1.xml', 'r')
tree = etree.parse(StringIO(FileInstance.read()), parser)
FileInstance.close()

output = []

for i in tree.xpath('//geo'):
    for element in i:
        if "s" in element.attrib['stid']:
            output.append(element.attrib['stid'])

print output
print len(output)