我正在尝试从以下URL解析一些XML数据:http://py4e-data.dr-chuck.net/comments_42.xml,返回Count值并对求出的值求和。
import urllib as ur
import xml.etree.ElementTree as ET
url = input(('Enter location: '))
print'Retrieving:', url
data = ur.urlopen(url).read()
tree = ET.fromstring(data)
counts = tree.findall('.//count')
print('Count: ', sum(counts))
#print('Sum: ', sum_all)
我知道这里有一些基本问题,但是我一直在尝试并且未能成功修改我的代码。我收到如下的TypeError:
Enter location: 'http://py4e-data.dr-chuck.net/comments_42.xml'
Retrieving: http://py4e-data.dr-chuck.net/comments_42.xml
Traceback (most recent call last):
File "extracting_xml.py", line 11, in <module>
print('Count: ', sum(counts))
TypeError: unsupported operand type(s) for +: 'int' and 'Element'
答案 0 :(得分:3)
您遇到的错误是求和sum(counts)
。相反,您应该这样做:
sum([int(el.text) for el in counts])
作为异常指示,您正在尝试汇总未定义加法运算符的Element
类型的找到的节点。节点包含纯整数,因此需要将节点文本转换为int
,然后进行总结。
如果节点中有浮点数,则可以使用float
构造函数。