列表组织成列而不是行

时间:2016-10-24 23:15:09

标签: python list rows

我有一个列表列表,我试图写入列而不是行。我的列表如下所示:

['31 32 31 8', '31 31 32 8', '31 31 31 8', '31 32 31 31']

我希望它像这样llok:

31 31 31 31
32 31 31 32
31 32 31 31
8 8 8 31

我可以在这样的行中得到漂亮的印刷品:

with open("text.csv", 'w') as f:
    for x in zip(contents):
        f.write('\t'.join(x)+'\n')

我想做的是在列

中获取此数据

3 个答案:

答案 0 :(得分:2)

您可以使用zip()。首先使用str.split()字符串列表转换为列表,然后迭代 zip ed列表。以下是示例代码:

>>> my_list = ['31 32 31 8', '31 31 32 8', '31 31 31 8', '31 32 31 31']
>>> my_list_list = [s.split() for s in my_list]
>>> for item in zip(*my_list_list):
...     print item
...
('31', '31', '31', '31')
('32', '31', '31', '32')
('31', '32', '31', '31')
('8', '8', '8', '31')

答案 1 :(得分:1)

使用zip()模块在​​您使用import csv # data is a list of lists data = [s.split() for s in ['31 32 31 8', '31 31 32 8', '31 31 31 8', '31 32 31 31']] with open('text.csv', 'w') as f: writer = csv.writer(f, delimiter='\t') writer.writerows(zip(*data)) 将其按摩到形状后输出数据:

^\[?(?:(?:\[(?:(?:[0-9]{1,}\,?){1,})\])\,?){1,}\]?$

这导致CSV文件使用tab作为分隔符,如下所示:

31  31  31  31
32  31  31  32
31  32  31  31
8   8   8   31

答案 2 :(得分:1)

或者,numpy对于这种东西真的很好。
如果你有
test = numpy.array([[31,32,31,8], [31,31,32,8], [31,31,31,8], [31,32,31,31]]
然后你可以通过说出来访问第一栏 test[:,0]返回array([31, 31, 31, 31])