eine Spalte aus einer Tabelle rausbekomen

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
tati
User
Beiträge: 6
Registriert: Freitag 19. Juni 2015, 17:25

Wie kann ich aus einer csv Datei, in der eine Tabelle drin ist, eine bestimmte Spalte extrahieren?

Danke schon mal fue die Hilfe :)
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@tati: was hast Du bereits versucht?
tati
User
Beiträge: 6
Registriert: Freitag 19. Juni 2015, 17:25

csv.reader
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@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?
tati
User
Beiträge: 6
Registriert: Freitag 19. Juni 2015, 17:25

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
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
tati
User
Beiträge: 6
Registriert: Freitag 19. Juni 2015, 17:25

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
tati
User
Beiträge: 6
Registriert: Freitag 19. Juni 2015, 17:25

Code: Alles auswählen

print(col[5:6])
hab es jetzt so gemacht, scheint zu funktionieren
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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?
tati
User
Beiträge: 6
Registriert: Freitag 19. Juni 2015, 17:25

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
AxXel001
User
Beiträge: 29
Registriert: Sonntag 7. Juni 2015, 22:22

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.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Antworten