我在Python中使用Beautiful Soup来从HTML文件中刮取一些数据。在某些情况下,Beautiful Soup会返回包含string
和NoneType
对象的列表。我想过滤掉所有NoneType
对象。本机Python函数从列表中删除NoneType元素?
在Python中,含有NoneType
对象的列表是不可迭代的,因此列表理解不适用于此。具体而言,如果我有一个包含NoneTypes
的列表lis
,并且我尝试执行诸如[x for x in lis (some condition/function)]
之类的操作,Python会抛出错误TypeError: argument of type 'NoneType' is not iterable
。
正如我们在other posts中看到的,在用户定义的函数中实现此功能很简单。这是我的味道:
def filterNoneType(lis):
lis2 = []
for l in links: #filter out NoneType
if type(l) == str:
lis2.append(l)
return lis2
但是,如果它存在,我很乐意使用内置的Python函数。我总是希望尽可能简化我的代码。 Python有一个内置函数可以从列表中删除NoneType
对象吗?
你错了,包含'None'的列表是不可迭代的。你可能(意外地)试图遍历'None'本身:'[x for None in]'。 –