2016-11-22 151 views
1

是否可以在列中读取csv文件而不是python中的行?Python阅读列中的csv文件?

例如如果我有一个CSV文件是这样的:

 
a b c 
1 0 1 
1 4 1 

一个人怎么会得到[a,1,1],[b,0,4],[c,1,1]或者各种各样的东西的清单?

+0

http://stackoverflow.com/questions/16503560/read-specific-columns- from-csv-file-with-python-csv这会回答你的问题 – WannaBeCoder

回答

3

您正在寻找转置功能。为了解决你的问题,

  1. 首先读取CSV作为行,在列表中 前创建行明智的元组:使用任何目前在Transpose a matrix in Python的解决方案[(a,b,c),(1,0,1),(1,4,1)..]
  2. 移调上面所列内容。

转后,你的数据会看起来像[(a,1,1),(b,0,4)..]

0

您可以使用这样的事情:

# Open file and read lines 
input_file = open('filename.csv') 
lines = input_file.readlines() 

# Create list with n sublists (n - number of columns) 
l = [[] for _ in lines[0].split('\t')] 

# Fill in sublists 
for line in lines: 
    for i, column in enumerate(line.split('\t')):  
     l[i].append(column) 
2

使用zip(*reader)

some.csv

a b c 
1 0 1 
1 4 1 

scrip.py

import csv 
with open('some.csv', 'rb') as f: 
    reader = csv.reader(f, delimiter=' ') 
    print zip(*reader) 

输出:

[('a', '1', '1'), ('b', '0', '4'), ('c', '1', '1')]