忽略列表理解中的无元素的方法

Dav*_*ave 0 python list nonetype

示例代码

list = [i.get('content').encode('utf-8') for i in self.soup.find_all('meta',attrs={"name": "description"})]
Run Code Online (Sandbox Code Playgroud)

问题是.encode('utf-8')会引发错误:

AttributeError: 'NoneType' object has no attribute 'encode'
Run Code Online (Sandbox Code Playgroud)

如果列表中的一个元素是None.

我想知道是否有一种'pythonic'方式将它保持在一行并忽略None元素.例如,您可以if not None在列表中放置一个子句吗?谢谢.

met*_*ter 5

我会将其分解为初始提取的生成器表达式以限制查找,因此get仅针对性能调用一次.

items_i = (i.get('content') for i in self.soup.find_all('meta',attrs={"name": "description"}))
items = [i.encode('utf-8') for i in items_i if i]
Run Code Online (Sandbox Code Playgroud)