繁体   English   中英

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

[英]Python remove empty elements from list of lists

我有一个这样的清单清单:

[['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', '', '']]

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

[['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']]

我怎样才能做到这一点?

我尝试了这个:

str_list = filter(None, list_of_lists)

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

str_list = [list(filter(None, lst)) for lst in list_of_lists]

filter()的调用被list()包装,以防您稍后在python3中尝试此操作,因为filter()在py3中返回迭代器。

请注意,由于您将此标签标记为 ,因此可能必须要小心,因为过滤可能会产生长度不同的行,并且列中的项目会出现错误。 如果您知道每一行的最后2个项目始终为空,则可以将它们切成薄片:

str_list = [row[:-2] for row in list_of_lists]

你可以join

output = [' '.join(i).split() for i in list_of_list]

乌普特

[['A001', 'atendimento', 'sust', 'concession\xc3\xa1rio', 'adv', 'bom', 'adj'],['A001', 'falar', 'verb', 'ter', 'verb', 'nada', 'pron', 'carro', 'sust'],['A001','n\xc3\xa3o','adv','perguntar','verb','problema','sust','carro','sust'],['A001','n\xc3\xa3o','adv','oferecer','verb','ligar','verb','compra','sust'],['A001','n\xc3\xa3o','adv','oferecer','verb','servi\xc3\xa7o','sust','compra','sust']]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM