Seite 1 von 1

eine Spalte aus einer Tabelle rausbekomen

Verfasst: Freitag 19. Juni 2015, 17:30
von tati
Wie kann ich aus einer csv Datei, in der eine Tabelle drin ist, eine bestimmte Spalte extrahieren?

Danke schon mal fue die Hilfe :)

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Freitag 19. Juni 2015, 17:32
von Sirius3
@tati: was hast Du bereits versucht?

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Freitag 19. Juni 2015, 17:41
von tati
csv.reader

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Freitag 19. Juni 2015, 18:07
von Sirius3
@tati: es motiviert Antwortende wenig, wenn der Fragensteller seine eigenen Bemühungen nicht zeigt. Wie man das csv-Modul verwendet, steht in der Dokumentation, wie man mit Listen arbeitet, in jedem Tutorial. Das Forum ist kein kostenloser Programmierservice. Wo soll man bei dieser Antwort anknüpfen?

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Freitag 19. Juni 2015, 21:44
von tati
ich weiss, dass es kein kostenloser Programmierservice ist, das brauche ich auch nicht. Ich will es selber verstehen und können, bin aber ein absoluter Anfänger im programmieren, deswegen fällt es sehr schwer am Anfang. Mit Listen habe ich es versucht, da bekomme ich doch aber nicht die ganze Spalte raus oder? und womit man das noch machen kann, weiss ich leider nicht

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Samstag 20. Juni 2015, 10:07
von /me
Folgenden Code müsstest du verstehen, wenn du mit csv.reader experimentiert hast.

Code: Alles auswählen

import csv

filename = 'myfile'
with open(filename, 'r') as csv_file:
    reader = csv.reader(csv_file, delimiter=';')
    for row in reader:
        print(row)
Wenn da schon Probleme sind, dann arbeite noch mal die Dokumentation durch und frag hier wenn das nicht weiterhelfen sollte.

Jetzt brauchst du nur noch vor der Schleife eine Liste definieren der du in der Schleife den Wert aus der gewünschten Spalte hinzufügst. Nach Ablauf der Schleife hast du dann alle Daten der Spalte in der Liste vorliegen.

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Samstag 20. Juni 2015, 12:24
von tati
danke fuer Ihre Antwort!


habe es jetzt so geloest:

Code: Alles auswählen

import csv

with open('mfile.csv','r', newline='') as f:
    reader = csv.reader(f, delimiter='\t')

    for col in reader:
        print(col[5])
allerdings bekomme ich immer noch die Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "assing.py", line 35, in <module>
    print(col[5])
IndexError: list index out of range
ich verstehe nicht, warum es einen Fehler meldet, obwohl ich die richtige Spalte angezeigt bekomme

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Samstag 20. Juni 2015, 13:16
von tati

Code: Alles auswählen

print(col[5:6])
hab es jetzt so gemacht, scheint zu funktionieren

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Samstag 20. Juni 2015, 13:30
von cofi
Es kann nicht sein, dass du sowohl die Fehlermeldung als auch die gewuenschte Spalte siehst. Kann es sein, dass die CSV unregelmaessig ist und nicht immer (mindestens) 6 Spalten hat?

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Samstag 20. Juni 2015, 13:51
von tati
nein, die csv ist schon regelmaessig.

das wurde angezeigt:

Code: Alles auswählen

KOUS
PPER
PTKA
ADJD
VVPP
VAFIN
$,
VVFIN
NE
APPR
NE
$,
KOUI
ART
ADJA
NN
PTKZU
VAINF
$,
ART
NN
$.
Traceback (most recent call last):
  File "assign.py", line 26, in <module>
    print(col[5])
IndexError: list index out of range
und nur, wenn ich

Code: Alles auswählen

print([5:6])
geschrieben habe, wurde die Fehlermeldung behoben

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Samstag 20. Juni 2015, 14:11
von cofi
Dein "Fix" funktioniert deshalb:

Code: Alles auswählen

In [7]: [][5:6]
Out[7]: []
Aber das ist keine wirkliche Loesung. Zumal es ja ein ganz anderes Ergebnis als `col[5]` ist.

Ich tippe mal darauf, dass deine Datei mit einer Leerzeile o.ae. endet.

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Montag 22. Juni 2015, 13:13
von AxXel001
Warum helft ihr ihm überhaupt damit, es ist doch offensichtlich, dass er keine Ahnung hat was er da tut. Dann sollte man sich auch nicht wundern, wenn immer mehr Leute kommen mit "Hi, ich hab folgendes Problem, bitte löst das!"

Zum Thema:
Lies dir was zu Listen, Indizes und dem richtigen Interpretieren von Fehlermeldungen durch.
Dein Code holt sich nacheinander die Zeilen aus der CSV Datei und greift dann auf deren 5. Element zu. Wenn eine Zeile aber kein 5. Element hat (zB weil sie leer ist), dann gibt das einen Fehler.

Re: eine Spalte aus einer Tabelle rausbekomen

Verfasst: Montag 22. Juni 2015, 13:53
von /me
AxXel001 hat geschrieben:Warum helft ihr ihm überhaupt damit, es ist doch offensichtlich, dass er keine Ahnung hat was er da tut.
Wir geben Anstöße für die korrekte Richtung. Das Lesen der Dokumentation und das Durcharbeiten des Tutorials hingegen muss der Fragesteller schon selber machen.