我正在尝试转置数据,并且 zip 功能运行良好。除非它找到最长的列表并将其应用于循环中的每个列表,否则我会得到很多空白。
这是我的代码:
Read_Data = inputdata.readlines()
Length_Data = len(Read_Data)
for a in range(Length_Data):
split_data = Read_Data[a].split(',')
zipper = zip(split_data)
print zipper
这给了我这个输出(这只是一个更大数据集中的示例列表):
[('Abagrotis alternata',), ('Bignoniaceae',), ('Cruciferae',), ('Ericaceae',), ('Fagaceae',), ('Juglandaceae',), ('Oleaceae',), ('Pinaceae',), ('Rosaceae',), ('Solanaceae',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('',), ('\n',)]
我有很多数据可以创建数千个这样的列表。有没有办法删除每个列表中出现的空白或 ''?感谢您的帮助
我做错了,所以这是我的示例数据
**Lep. Species** **Column** **Column** **Column**
Abablemma brimleyana Algae
Abagrotis alternata Bignoniaceae Cruciferae Ericaceae
Abagrotis anchocelioides Ericaceae Rosaceae
Abagrotis brunneipennis Rosaceae Ericaceae
Abagrotis cryptica Rosaceae Salicaceae
Abagrotis cupida Ericaceae Rosaceae Salicaceae
Abagrotis magnicupida Asteraceae Caryophyllaceae
这就是我希望输出的样子
**Lep. Species** **Column**
Abablemma brimleyana Algae
Abagrotis alternata Bignoniaceae
Abagrotis alternata Cruciferae
Abagrotis alternata Ericaceae
Abagrotis anchocelioides Ericaceae
Abagrotis anchocelioides Rosaceae
等等。
我想我需要的帮助比我想象的要多。再次感谢您的帮助
请您参考如下方法:
在传递给 zip 内置
zipper = zip(e for e in split_data if e)
解释:
e for e in split_data if e
没有括号,上面的表达式是一个generator expression .与 list comprehension 不同的生成器表达式(带括号),在传递给 built-in zip 之前不会生成整个列表。所以它只是一个 iterable zip 迭代直到引发异常 StopIteration
表达式等效于以下循环表达式
result = []
for e in split_data:
#Empty Check
if e:
result.append(e)
