我有一个列表列表,我试图写入列而不是行。我的列表如下所示:
['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')
我想做的是在列
中获取此数据答案 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])