当循环返回空时,写一些东西而不是'None'

时间:2015-03-02 17:23:13

标签: python pandas beautifulsoup

我正在使用BeautifulSoup解析原始html,使用一组七个for循环写入七个列表。然后我将这些列表写入Pandas数据帧。为此,所有列表必须具有相同的长度。但由于没有找到某些条目的数据,七个列表中的一个总是缩短。我希望它在列表中添加一些内容(例如"缺少"),即使它什么也没找到,所以所有列表最终都有相同数量的条目。下面是一个简单的例子,只有七个循环中的两个:

#FIRST LOOP
retweets = data.find_all(class_='Something')
for rt in retweets:
    rt2 = rt.get_text()
firstlist.append(rt2[0])

#SECOND LOOP
replies = data.find_all(class_='Something_else')
for rp in replies:
    rp2 = rp.get_text()
secondlist.append(rp2[0])

第一个列表通常会缩短,所以我尝试了下面的代码,但列表长度仍然相同。它似乎没有丢失'什么时候失踪。

#FIRST LOOP
retweets = data.find_all(class_='Something')
for rt in retweets:
    rt2 = rt.get_text()
if rt2 is not None:
    firstlist.append(rt2)
else:
    firstlist.append('missing')

1 个答案:

答案 0 :(得分:2)

如果没有看到您的原始HTML,我认为您的文件中的条目完全丢失。在这种情况下,find_all返回的列表将只与数据中存在的条目数一样长。您可以做的是检查每个列表的长度,然后填写第一个列表,如果它更短,则填充必需数量的missing值。

另一种可能性是该列表不包含"无"但是一个空字符串,你需要检查它。