我正在尝试获取提供的示例数据,计算所有出现的' count',然后在这些位置添加整数。
示例xml数据:http://python-data.dr-chuck.net/comments_42.xml
到目前为止我的代码:
import urllib
import xml.etree.ElementTree as ET
url = 'http://python-data.dr-chuck.net/comments_42.xml'
print 'Retrieving', url
site = urllib.urlopen(url)
data = site.read()
print 'Retrieved',len(data),'characters'
print data
tree = ET.fromstring(data)
results = tree.findall('count')
print results
total = results.sum
print total
当我跑步时,我得到: 打印xml示例Web数据,然后打印一个空的[]
我想要的输出类似于
检索到4204个字符 数:50 总和:2482
答案 0 :(得分:1)
您的代码存在一些问题:
首先 - 你需要为你正在寻找的元素使用正确的xpath:
results = tree.findall('comments/comment/count')
这会产生:
[<Element 'count' at 0x10b42ca10>, <Element 'count' at 0x10b42cad0>, ...]
如您所见,它们是Element
个实例。其次,您必须从这些实例中检索标记内容并将值转换为整数:
counts = [int(r.text) for r in results]
然后您可以将所有计数加总为单值:
count = sum(counts)
答案 1 :(得分:0)
Element.findall()仅查找带有标记的元素,这些元素是当前元素的直接子元素。
这些count
元素不是根元素的直接子元素。
您需要执行类似
的操作for i in tree.iter('count'):
print i.text
如果您想要所有count
的总和:
sum([int(i.text) for i in tree.iter('count')]) # returns 2482