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.