0

有没有办法在几个 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 来做 - 至少,这就是我会做的......)

谢谢你的帮助。

4

1 回答 1

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)
于 2013-08-26T17:20:45.467 回答