Python从列表列表中删除空元素

Fir*_*fly 1 python csv

我有一个这样的列表列表:

[['A001', 'atendimento', 'sust', 'concessionário', 'adv', 'bom', 'adj', '', ''],
 ['A001', 'falar', 'verb', 'ter', 'verb', 'nada', 'pron', 'carro', 'sust', '', ''],
 ['A001', 'não', 'adv', 'perguntar', 'verb', 'problema', 'sust', 'carro', 'sust', '', ''],
 ['A001', 'não', 'adv', 'oferecer', 'verb', 'ligar', 'verb', 'compra', 'sust', '', ''],
 ['A001', 'não', 'adv', 'oferecer', 'verb', 'serviço', 'sust', 'compra', 'sust', '', '']]
Run Code Online (Sandbox Code Playgroud)

我想从每个列表中删除空元素,获取没有空元素的新列表列表:

[['A001', 'atendimento', 'sust', 'concessionário', 'adv', 'bom', 'adj'],
 ['A001', 'falar', 'verb', 'ter', 'verb', 'nada', 'pron', 'carro', 'sust'],
 ['A001', 'não', 'adv', 'perguntar', 'verb', 'problema', 'sust', 'carro', 'sust'],
 ['A001', 'não', 'adv', 'oferecer', 'verb', 'ligar', 'verb', 'compra', 'sust'],
 ['A001', 'não', 'adv', 'oferecer', 'verb', 'serviço', 'sust', 'compra', 'sust']]
Run Code Online (Sandbox Code Playgroud)

我怎么能实现这个目标?

我试过这个:

str_list = filter(None, list_of_lists)
Run Code Online (Sandbox Code Playgroud)

Ilj*_*ilä 6

您的尝试将从列表列表中删除空列表,而不是从子列表中删除空元素.而是将过滤器应用于子列表:

str_list = [list(filter(None, lst)) for lst in list_of_lists]
Run Code Online (Sandbox Code Playgroud)

如果你碰巧在python3中尝试这个,那么调用将filter()被包装list(),因为filter()在py3中返回一个迭代器.

请注意,由于您将此标记为,因此可能必须小心,因为过滤可能会生成具有不同长度的行和错误列中的项.如果您知道对于每一行,最后两个项将始终为空,您可以将它们切片:

str_list = [row[:-2] for row in list_of_lists]
Run Code Online (Sandbox Code Playgroud)