【发布时间】:2017-03-02 00:35:53
【问题描述】:
我尝试将制表符分隔的表格读入列表数组。 我用过:
with open('/home/data.txt') as textFile:
data = [line.split() for line in textFile]
效果很好
打印给了我这个(添加换行符以提高可读性):
[('Col1', 'Col2', 'Col3', 'Col4'),
('A', 1, 2, 3),
('B', 4, 5, 6),
('C', 11, 22, 33),
('D', 44, 55, 66),
('E', 1, 2),
('F', 1, 2)]
对于最后两行,Col4 的值为空。
现在我的问题: 我想简单地创建一个基于列的列表,所以我只是做了一个 print(zip(*data)) 但是,这会完全省略第 4 列....
[('Col1', 'A', 'B', 'C', 'D', 'E', 'F'),
('Col2', 1, 4, 11, 44, 1, 1),
('Col3', 2, 5, 22, 55, 2, 2)]
我想要类似的东西:
[('Col1', 'A', 'B', 'C', 'D', 'E', 'F'),
('Col2', 1, 4, 11, 44, 1, 1),
('Col3', 2, 5, 22, 55, 2, 2),
('Col4', 3, 6, 33, 66)]
任何想法如何处理?
谢谢!
【问题讨论】:
-
您请求的输出不一定可行 - 如果短行不在最后,由于缺少项目,您的列将不再排列。而不是
zip(),尝试itertools.zip_longest()- 它用None(或fillvalue=参数指定的另一个值)填充短行。
标签: python python-3.x