2015-03-02 80 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,如果它更短。

另一種可能性是該列表不包含「無」而是一個空字符串,您將需要檢查。

相關問題