私は美しいスープをPythonで使用して、HTMLファイルからデータを取ります。場合によっては、Beautiful Soupはstring
とNoneType
の両方のオブジェクトを含むリストを返します。私はすべてのNoneType
オブジェクトを除外したいと思います。リストからNoneType要素を削除するネイティブPython関数?
Pythonでは、NoneType
オブジェクトを含むリストは反復可能ではないため、リスト内包はオプションではありません。具体的には、リストlis
にNoneTypes
が含まれていて、[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関数を使用したいと思います。私は常に可能な限り私のコードを簡素化したい。 リストからNoneType
個のオブジェクトを削除できる組み込み関数はありますか?あなたも、それは本質的に同じバイトコードにコンパイルされた場合でも、is not
を使用することができますコメントで指摘したように
clean = [x for x in lis if x != None]
:あなたは、この使用してリストの内包を行うことができます
「なし」を含むリストは反復できません。間違っています。あなたはおそらく(偶然に) 'None'自身を反復しようとしています:' [x for None in] '。 –