Sto cercando di analizzare un file CSV ed estrarre i dati solo da colonne specifiche.
Esempio CSV:
< codice>ID | Nome | Indirizzo | Città | Stato | CAP | Telefono | OPEID | IPEDS | 10 | C... | 130 W.. | Lu.. | AL... | 3.. | 334.. | 01023 | 10063 |
Sto cercando di acquisire solo colonne specifiche, ad esempio ID
, Nome
, Zip
> e Telefono
.
Il codice che ho esaminato mi ha portato a credere di poter chiamare la colonna specifica con il numero corrispondente, quindi: Nome
corrisponderebbe a 2
e l'iterazione di ogni riga utilizzando row[2]
produrrebbe tutti gli elementi nella colonna 2. Solo che non è così.
Ecco cosa ho fatto finora:
import sys, argparse, csv da settings import * # command arguments parser = argparse.ArgumentParser(description="csv to postgres", fromfile_prefix_chars ="@" ) parser.add_argument("file", help="file csv da importare", azione ="store") args = parser.parse_args() csv_file = args.file # apre il file csv con open(csv_file, "rb") come csvfile: # ottiene il numero di colonne per la riga in csvfile.readlines(): array = line .split(",") first_item = array[0] num_columns = len(array) csvfile.seek(0) reader = csv.reader(csvfile, delimiter=" ") includes_cols = [1, 2, 6, 7] per riga nel lettore: content = list(row[i] for i in includes_cols) print content
e mi aspetto che questo stamperà solo le colonne specifiche che voglio per ogni riga tranne non lo fa, ottengo solo l'ultima colonna.