我有一个像这样的列表列表:
[['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)
答案 0 :(得分:6)
您的尝试将从列表列表中删除空列表,而不是从子列表中删除空元素。而是将过滤器应用于子列表:
str_list = [list(filter(None, lst)) for lst in list_of_lists]
对filter()
的调用包含list()
,以防您稍后在python3中尝试此操作,因为filter()
在py3中返回迭代器。
请注意,由于您将其标记为csv,因此可能必须小心,因为过滤可能会生成长度不同的行和错误列中的项目。如果您知道对于每一行,最后两个项将始终为空,您可以将它们分割出来:
str_list = [row[:-2] for row in list_of_lists]
答案 1 :(得分:1)
您可以使用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']]