当循环返回空时写一些东西而不是 'None'
Writing something instead of 'None' when loop comes back empty
我正在用 BeautifulSoup 解析原始 html,使用一组写入七个列表的七个 for 循环。然后我将这些列表写入 Pandas 数据框。为此,所有列表的长度必须相等。但是由于找不到某些条目的数据,七个列表中的一个总是返回较短。我希望它在列表中放一些东西(比如 "missing"),即使它什么也没找到,这样所有列表最终都有相同数量的条目。下面是一个简化的例子,只有七个循环中的两个:
#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])
通常返回的第一个列表较短,所以我尝试了下面的代码,但列表长度仍然相同。缺的时候好像没有放'missing'
#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')
没有看到你的原始 HTML,我认为你的文件中的条目完全丢失了。在这种情况下,find_all
返回的列表将仅与数据中存在的条目数一样长。您可以做的是检查每个列表的长度,如果第一个列表较短,则用所需数量的 missing
值填充第一个列表。
另一种可能性是该列表不包含 "None" 而是一个空字符串,您需要检查一下。
我正在用 BeautifulSoup 解析原始 html,使用一组写入七个列表的七个 for 循环。然后我将这些列表写入 Pandas 数据框。为此,所有列表的长度必须相等。但是由于找不到某些条目的数据,七个列表中的一个总是返回较短。我希望它在列表中放一些东西(比如 "missing"),即使它什么也没找到,这样所有列表最终都有相同数量的条目。下面是一个简化的例子,只有七个循环中的两个:
#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])
通常返回的第一个列表较短,所以我尝试了下面的代码,但列表长度仍然相同。缺的时候好像没有放'missing'
#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')
没有看到你的原始 HTML,我认为你的文件中的条目完全丢失了。在这种情况下,find_all
返回的列表将仅与数据中存在的条目数一样长。您可以做的是检查每个列表的长度,如果第一个列表较短,则用所需数量的 missing
值填充第一个列表。
另一种可能性是该列表不包含 "None" 而是一个空字符串,您需要检查一下。