2015-03-02 30 views
0

我用BeautifulSoup解析原始html,使用一组七个for循环写入七个列表。然后我将这些列表写入Pandas数据框。为此,所有列表必须具有相同的长度。但是由于没有找到某些条目的数据,七个列表中的其中一个总是会缩短。我希望它把一些东西放在列表中(比如“丢失”),即使它什么也没找到,这样所有的列表最终都会有相同数量的条目。下面是一个只有两个七环的一个简单的例子:当循环回来时写一些东西而不是'None'空

#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

那么你有没有调试过它为什么不会追加缺失,或许这个长度反而比较短,而不是缺失/空值? – EdChum 2015-03-02 17:42:16

回答

2

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

另一种可能性是该列表不包含“无”而是一个空字符串,您将需要检查。

相关问题