csv.DictReader - Problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mburghart
User
Beiträge: 6
Registriert: Mittwoch 12. Oktober 2011, 13:59

Hallo erst einmal zusammen,

ich bin neu hier im Forum und habe erst vor kurzem mit Python angefangen. Ich habe schon PHP, JavaScript, Java und C++ programmiert. Aber Python hat mir von der ersten Sekunde gefallen.

Nun zum Problem:

Ich soll eine CSV-Datei (Tabelle) einlesen und habe bereits die beiden Möglichkeiten csv.reader und csv.DictReader ausprobiert. Leider ist der DictReader sehr schlecht in der Referenz erklärt und ich kenne mich nicht mehr aus obwohl ich denke, dass es der richtige Weg für mein Problem ist.

Ich möchte, nachdem ich die CSV eingelesen habe auf einzelne Tabellenwerte zugreifen. Also z. B. von Spalte 3 die dritte Zelle. Das geht aber nicht. In den gängigen Tutorials und Erklärungen wird die CSV nur immer eingelesen und dann sofort per

Code: Alles auswählen

for row in reader:
         ...     print row
ausgegeben. Ich will aber nicht immer alles ausgeben sondern brauche die Einzelwerte. Wie greife ich darauf zu?

Vielen Dank und Gruß
Michael
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Hallo und Willkommen im Forum,

schön das dir Python gefällt. Die Verwendung von "Ich soll..." deutet irgendwie auf Hausaufgabe hin. Daher halte ich mich mit Code mal etwas zurück. ;)

Wenn du die Funktion "csv.reader" verwendest, wird ein Iterator zurückgegeben, mit dem du über die einzelnen Zeilen iterieren kannst. Jede Zeile wird als List zurückgegeben. Sollte deine Tabelle nicht zu groß sein, kannst du den Iterator mit "list(itertator)" in eine verschachtelte Liste umwandeln. Auf die dritte Spalte, dritte Zeile kannst du dann mit Hilfe von Indices zugreifen. Wie bei C++ hat das erste Element den Index "0".

Grüße
Gerrit
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

mburghart hat geschrieben:Ich soll eine CSV-Datei (Tabelle) einlesen und habe bereits die beiden Möglichkeiten csv.reader und csv.DictReader ausprobiert. Leider ist der DictReader sehr schlecht in der Referenz erklärt und ich kenne mich nicht mehr aus obwohl ich denke, dass es der richtige Weg für mein Problem ist.

Ich möchte, nachdem ich die CSV eingelesen habe auf einzelne Tabellenwerte zugreifen. Also z. B. von Spalte 3 die dritte Zelle. Das geht aber nicht.
Wenn du den DictReader verwendest, dann bekommst du als Einzelergebnis ein Dictionary zurück auf das du dann über den Namen der Spalte zugreifst. Die Zuordnung zur Nummer der Spalte ist dabei aufgehoben.
mburghart
User
Beiträge: 6
Registriert: Mittwoch 12. Oktober 2011, 13:59

Vielen Dank für die Antworten.
In der Zwischenzeit, hatte ich es auch selbst herausgefunden.

Gruß
Michael
Antworten