使用ElementTree提取XML解析

时间:2019-01-27 17:02:07

标签: python xml python-3.x elementtree

我正在尝试从以下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'

1 个答案:

答案 0 :(得分:3)

您遇到的错误是求和sum(counts)。相反,您应该这样做:

sum([int(el.text) for el in counts])

作为异常指示,您正在尝试汇总未定义加法运算符的Element类型的找到的节点。节点包含纯整数,因此需要将节点文本转换为int,然后进行总结。

如果节点中有浮点数,则可以使用float构造函数。