Lesen Sie bestimmte Spalten aus einer CSV-Datei mit dem CSV-Modul?

| | | | | | | | | | | | | | | | | | | |

Ich versuche, eine CSV-Datei zu parsen und die Daten nur aus bestimmten Spalten zu extrahieren.

Beispiel-CSV:

ID | Name | Adresse | Stadt | Bundesland | PLZ | Telefon | OPEID | IPEDS | 10 | C... | 130 W.. | Mo.. | AL... | 3.. | 334.. | 01023 | 10063 | 

Ich versuche, nur bestimmte Spalten zu erfassen, sagen wir ID, Name, PLZ und Telefon.

Der Code, den ich mir angeschaut habe, hat mich glauben lassen, dass ich die spezifische Spalte mit ihrer entsprechenden Nummer anrufen kann, also zB: Name würde 2 entsprechen und das Iterieren durch jede Zeile mit row[2] würde alle Elemente in Spalte 2 erzeugen. Nur tut es das nicht.

Folgendes habe ich bisher gemacht:

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-Datei zum Importieren", Aktion ="store") args = parser.parse_args() csv_file = args.file # csv-Datei öffnen mit open(csv_file, "rb") als csvfile: # Spaltenanzahl für Zeile in csvfile.readlines() ermitteln: Array = Zeile .split(",") first_item = array[0] num_columns = len(array) csvfile.seek(0) reader = csv.reader(csvfile, delimiter=" ") included_cols = [1, 2, 6, 7] für Zeile im Reader: content = list(row[i] for i in included_cols) print content 

und ich erwarte, dass dies nur die spezifischen Spalten ausdruckt, die ich für jede Zeile möchte, außer tut es nicht, ich bekomme nur die letzte Spalte.