有没有办法在几个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来做 - 至少,这就是我要做的......)
感谢您的帮助。
答案 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)