Sto cercando di analizzare un file CSV ed estrarre i dati solo da colonne specifiche.
Esempio di CSV:
ID | Name | Address | City | State | Zip | Phone | OPEID | IPEDS |
10 | C... | 130 W.. | Mo.. | AL... | 3.. | 334.. | 01023 | 10063 |
Sto cercando di catturare solo le colonne specifiche, ad esempio ID, Name, Zipe Phone.
Il codice che ho visto mi ha portato a credere di poter chiamare la colonna specifica per il suo numero corrispondente, quindi vale a dire: Namecorrisponderebbe 2e ripetendo ogni riga usando row[2]produrrebbe tutti gli elementi nella colonna 2. Solo che non lo fa.
Ecco cosa ho fatto finora:
import sys, argparse, csv
from settings import *
# command arguments
parser = argparse.ArgumentParser(description='csv to postgres',\
fromfile_prefix_chars="@" )
parser.add_argument('file', help='csv file to import', action='store')
args = parser.parse_args()
csv_file = args.file
# open csv file
with open(csv_file, 'rb') as csvfile:
# get number of columns
for line in csvfile.readlines():
array = line.split(',')
first_item = array[0]
num_columns = len(array)
csvfile.seek(0)
reader = csv.reader(csvfile, delimiter=' ')
included_cols = [1, 2, 6, 7]
for row in reader:
content = list(row[i] for i in included_cols)
print content
e mi aspetto che questo stamperà solo le colonne specifiche che desidero per ogni riga, tranne per il fatto che ottengo solo l'ultima colonna.
"rb"è appropriato per il passaggio csv.reader.
'rb'bandiera aopen()? non dovrebbe essere semplicer?