2013-07-23 73 views
0

我需要從csv文件中讀取特定列並根據列中的數據操作代碼。我對我對列進行硬編碼的方式並不滿意。我相信Python提供了一個更好的方式來完成我所做的事情。有沒有人有做下面的東西,尤其是從CSV讀取特定10列的一個更好的建議:讀取csv文件的更好方法

import csv 
import os 
import sys 

file_csv = sys.argv[1] 

Cat1=[] 
Cat2=[] 
Cat3=[] 
Cat4=[] 

with open(file_csv,'rb') as f: 
    next(f) 
reader=csv.reader(f,delimiter='\t') 
for col1,col2,col3,col4,col5,col6,col7,col8,col9,col10 in reader: 
    Cat1.append(col2) 
    Cat2.append(col4) 
    Cat3.append(col8) 
    Cat4.append(col10) 

datadict = zip(Cat1, Cat2, Cat3, Cat4) 

for files, path, fname, pid in datadict: 
    bla bla bla 
+0

不確定'datadict'在那裏做什麼,因爲zip中使用的名稱沒有被分配到任何地方;我根據CSV閱讀位回答了這個問題。 –

+0

嗨,對不起!我在那裏複製了錯誤的代碼。我的錯!現在編輯了代碼 – Ans

回答

1

一個DictReader將你的行轉換成的鍵是列名字典,造成這樣的:

with open(file_csv,'rb') as f: 
    reader = csv.DictReader(f) 
    lines = list(reader) 

for line in lines: 
    print line['column1'] 
    print line['column2'] 
    # ...