Используйте itertools.groupby
, чтобы сгруппировать записи по тому, являются ли они *
или нет, а затем просто сохранить те части, которые не *
, используя метод __ne__
(не равно) или эквивалентныйlambda
выражение:
>>> import itertools
>>> mylist = ['*', 'Drama', 'Film Noir', 'Mystery', 'Romance', '*', 'Dance', 'Drama', 'Musical', '*', 'Crime', 'Drama', '*', 'Action', 'Drama', 'Period', 'Western', '*', 'Adaptation', 'Based-on', 'Comedy', 'Romance', '*', 'Mystery', 'Thriller', '*', 'Comedy']
>>> [tuple(g) for k, g in itertools.groupby(mylist, key="*".__ne__) if k]
[('Drama', 'Film Noir', 'Mystery', 'Romance'),
('Dance', 'Drama', 'Musical'),
('Crime', 'Drama'),
('Action', 'Drama', 'Period', 'Western'),
('Adaptation', 'Based-on', 'Comedy', 'Romance'),
('Mystery', 'Thriller'),
('Comedy',)]