我正在使用Python进行编码并尝试学习scrapy的东西......
我运行代码时总是遇到同样的错误,但我不明白为什么...... 这是我的代码:
avgcost_tot = response.xpath('//div[@class="jsFacetListing mgFacetListing mgFOpen"][1]/div[@class="mgFAllList"][1]/ul/li/label/span/text()').re(r'\<?(.*[\d]*)\€+')
if (len(avgcost_tot) != 0):
avgcost = [avgcost_tot[i].split(' ') for i in range(len(avgcost_tot))]
for i in range(len(avgcost)):
avgcost[i].remove(avgcost[i][1])
for i in range(1,len(avgcost)-1):
avgcost[i].remove(avgcost[i][2])
while avgcost[i] != '':
avgcost[i] = int(sum(list(map(int, avgcost[i])))/len(avgcost[i]))
我在这些之前和之后有很多行,但我知道我的错误来自这里。
错误是:TypeError: 'int' object is not iterable
...
有人帮我这个吗?
答案 0 :(得分:0)
这里:
avgcost[i] = int(sum(list(map(int, avgcost[i])))/len(avgcost[i]))
以及更确切地说:
map(int, avgcost[i])
您将整数传递给map()
。好吧,在while循环的第二次迭代中,至少它是一个整数(作为第一次迭代的结果)。
当我们在它的时候,如果它没有引发,这个循环可能是无限的,因为int不会等于空字符串。实际上我在这里看不到while
循环的重点。
此外,您不需要将map()
的结果传递给list
- 在Python2中它已经是list
,而在Python3中它将是一个可迭代的直接传递给sum()
。由于整数之和将是一个整数,因此将sum()
的结果传递给int()
也是无用的。