Python TypeError:+;的操作数类型不受支持:';int';和';元素';

Python TypeError:+;的操作数类型不受支持:';int';和';元素';,python,python-2.7,Python,Python 2.7,你好 每当我尝试运行下面的python脚本时,都会遇到一个错误。它假定给出从XML文件中提取的值的总和。 错误消息是: TypeError:不支持+:“int”和“Element”的操作数类型 我已经尝试了所有的选择,但是错误仍然会出现。我哪里做错了 源文件: <commentinfo> <comments> <comment> <name>TDK</name> <count>5000</count> </

你好 每当我尝试运行下面的python脚本时,都会遇到一个错误。它假定给出从XML文件中提取的值的总和。 错误消息是: TypeError:不支持+:“int”和“Element”的操作数类型

我已经尝试了所有的选择,但是错误仍然会出现。我哪里做错了

源文件:

<commentinfo>
<comments>
<comment>
<name>TDK</name>
<count>5000</count>
</comment>
<comment>
<name>Swats</name>
<count>420</count>
</comment>
<comment>
<name>Tandwa</name>
<count>2000</count>
</comment>
</comments>
</commentinfo>
错误消息:

Traceback (most recent call last):
  File "test.py", line 12, in <module>
    number=int(item)
TypeError: int() argument must be a string or a number, not 'Element'
回溯(最近一次呼叫最后一次):
文件“test.py”,第12行,在
编号=整数(项目)
TypeError:int()参数必须是字符串或数字,而不是“元素”

您可能打算从每个
中获取
子元素的值,并将它们相加?如果是这样,则对for循环进行以下轻微修改就足够了:

score = []
for item in lst:
    number = int(item.find("count").text)
    score.append(number)
total = sum(score)
print 'Sum', total
您的问题是,每个“项”都是一个XML元素:

如果我按如下方式修改代码,您可以看到错误:

...
score = []
for item in lst:
    print(item)
    number = int(item)
    score.append(number)
    total = int(sum(score))
...
当它运行时,我们在引发错误之前开始第一次运行

<Element 'comment' at 0x7f9da76584a8>
然后,我们可以使用元素文本中的
int()
builtin来获取值:

# this is a generator expression, it tells the code how to run but doesn't do it yet
scores = (int(i.text) for i in lst)
然后,我们可以评估总数:

total = sum(scores)
总代码(加载打开文件作为数据并读取后)如下所示:

lst = tree.findall('comments/comment/count')
print('Retrieved', len(data), 'characters')

tree = ET.fromstring(data)
lst = tree.findall('comments/comment/count')
print('Value', len(lst))

scores = (int(i.text) for i in lst)
total = sum(scores)
print('Sum', total)
我们得到的结果是:

Retrieved 230 characters
Value 3
Sum 7420

什么是
n
?你的代码中没有定义它。
lst
也没有定义。我敢打赌OP的意思是使用
number
而不是
n
,但谁知道呢……程序如下:刚刚编辑了代码。感谢Levalternative
score=[int(item.find(“count”).text)为lst中的项目提供帮助]
Waal,在我绞尽脑汁2天后,最终解决方案开始生效。我已经测试了这些评论中建议的所有解决方案,并且都运行良好。谢谢大家的回复。从建议的解决方案中,我意识到我的问题在于确定问题的要素。如果我们中的任何一方帮助过你,并回答了你的问题,请将问题标记为已回答。很乐意帮忙。
Retrieved 230 characters
Value 3
Sum 7420