Python合并列表

时间:2016-01-10 22:19:45

标签: python beautifulsoup

我想从website得到数字的总和。我这样做:

lst = list()
url = raw_input('Enter - ')
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
tags = soup('span')
for tag in tags:
    lst.append(map(int,tag.contents))
print lst

但如果我没有记错的话,我现在每个号码都有一个子列表。因此,sum(lst)不起作用。如何合并子列表或将数字放在单个列表中?谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

import urllib
from bs4 import BeautifulSoup

url = 'http://python-data.dr-chuck.net/comments_213060.html'
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
tags = soup('span')
lst = [int(tag.text) for tag in tags]
print(sum(lst))

<强>输出

2838

答案 1 :(得分:2)

您可以使用built-in sum() function

comments = soup('span', class_="comments")
sum_coments = sum(int(comment.get_text(strip=True)) for comment in comments)
print(sum_coments)  # prints 2838

请注意,此处使用的.get_text()返回元素的“文本”,而不是.contents,它是元素子元素的文本列表。

请注意,我还改进了定位器,并检查span是否有comments类。