Używam Beautiful Soup w Pythonie do zeskanowania niektórych danych z plików HTML. W niektórych przypadkach, Beautiful Soup zwraca listy, które zawierają zarówno obiekty string
, jak i . Chciałbym odfiltrować wszystkie obiekty NoneType
.Natywna funkcja Pythona do usuwania elementów NoneType z listy?
W języku Python, listy zawierające obiekty NoneType
nie są możliwe do sprawdzenia, więc zrozumienie listy nie jest możliwe. W szczególności, jeśli mam listę lis
zawierającą NoneTypes
i próbuję zrobić coś takiego jak [x for x in lis (some condition/function)]
, Python zgłasza błąd TypeError: argument of type 'NoneType' is not iterable
.
Jak widzieliśmy w artykule other posts, można łatwo zaimplementować tę funkcję w funkcji zdefiniowanej przez użytkownika. Oto mój smak tego:
def filterNoneType(lis):
lis2 = []
for l in links: #filter out NoneType
if type(l) == str:
lis2.append(l)
return lis2
Jednak chciałbym użyć wbudowanej funkcji Pythona, jeśli istnieje. Zawsze lubię upraszczać mój kod, jeśli to możliwe. Czy Python ma wbudowaną funkcję, która może usuwać obiekty z listy z obiektów NoneType
?
Mylisz się, że listy zawierające "Brak" nie są możliwe do sprawdzenia. Prawdopodobnie (przypadkowo) próbujesz powtórzyć sam "Brak": '[x dla x w Brak]'. –