2013-07-23 5 views
0

Je dois lire des colonnes spécifiques d'un fichier csv et manipuler le code en fonction des données contenues dans les colonnes. Je ne suis pas content de la façon dont j'ai codé les colonnes. Je suis sûr que Python fournit une meilleure façon de faire ce que j'ai fait. Quelqu'un at-il une meilleure suggestion de faire les choses ci-dessous en particulier la lecture des 10 colonnes spécifiques de csv:Meilleure façon de lire un fichier 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

Vous ne savez pas ce que fait 'datadict' car les noms utilisés dans le zip ne sont assignés nulle part; Je l'ai répondu sur la base de la lecture CSV. –

+0

Salut, désolé! J'ai copié le mauvais code là-dedans. Ma faute! J'ai édité le code maintenant .. – Ans

Répondre

1

Un DictReader vous permet de convertir vos lignes dans les dictionnaires avec la clé étant le nom de la colonne, ce qui suit:

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

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