Ich habe eine csv Datei mit zwei Spalten. Ich habe es hinbekommen ein array aus der ersten Spalte zu machen:
with open("DB_csv.csv", "r") as csvfile:
datei = csv.reader(csvfile, delimiter=';')
for row in datei:
array.append(row[0])
print(array)
allerdings bekomme ich es nicht hin ein array mit nur den daten aus der zweiten spalte zu machen. Ich dachte an:
with open(name, "r") as csvfile:
datei = csv.reader(csvfile, delimiter=';')
for row in datei:
array.append(row[1])
print(array)
dies funktioniert leider nicht
Spalten aus csv Datei in arrays
Bitte poste deinen Code in Code-Tags (erscheinen wenn man über dem Eingabefeld den </>-Knopf drückt).
Was bedeutet "es funktioniert nicht"?
Fehlemeldung? Erwartetes und tatsächliches Ergebnis? Wie sehen die Ursprungsdaten aus?
Bitte möglichst Rohdaten zeigen und nicht beschreiben, was nicht geht.
Was bedeutet "es funktioniert nicht"?
Fehlemeldung? Erwartetes und tatsächliches Ergebnis? Wie sehen die Ursprungsdaten aus?
Bitte möglichst Rohdaten zeigen und nicht beschreiben, was nicht geht.
- __blackjack__
- User
- Beiträge: 13242
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Antik: Wo kommt `array` her und ist das tatsächlich ein Array? Falls das eine Liste ist, nenn die nicht `array` weil das verwirrend ist, denn es gibt auch Arrays in Python. Üblicherweise sind dann Arraydatentypen aus `numpy` gemeint, es gibt in der Standardbibliothek auch ein `array`-Modul.
`datei` passt als Name auch nicht so ganz zu einem CSV-Reader. `rows` oder `reader` wären besser. Insgesamt sollte man auch vermeiden Deutsch und Englisch zu mischen.
`datei` passt als Name auch nicht so ganz zu einem CSV-Reader. `rows` oder `reader` wären besser. Insgesamt sollte man auch vermeiden Deutsch und Englisch zu mischen.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Entschuldige bin neu hier und in Pythonsparrow hat geschrieben: ↑Mittwoch 6. Februar 2019, 11:45 Bitte poste deinen Code in Code-Tags (erscheinen wenn man über dem Eingabefeld den </>-Knopf drückt).
Was bedeutet "es funktioniert nicht"?
Fehlemeldung? Erwartetes und tatsächliches Ergebnis? Wie sehen die Ursprungsdaten aus?
Bitte möglichst Rohdaten zeigen und nicht beschreiben, was nicht geht.
Ich erstelle eine csv Datei mit folgenden spalten:
in Spalte eins stehen die nummern die von RFID-Tags ausgelesen werden: z.B. e20030987906028116806b7a, e20030987906028116806b7a, e20030987906028116806b7a,
in Spalte zwei steht der Zeitstempel wann diese Tags eingelesen wurden: z.B. 06.02.19 10:59:53, 06.02.19 11:00:33, 06.02.19 11:08:33
Code: Alles auswählen
with open(DB_csv.csv "r") as csvfile:
datei = csv.reader(csvfile, delimiter=';')
for row in datei:
array.append(row[0])
print(array)
['RFID-Tag,Zeitstempel', 'e20030987906028116806b7a', 'e20030987906028116806b7a', 'e20030987906028116806b7a']
Ich möchte kontrollieren ob ein RFID Tag bereits in der spalte steht. Das kann ich mit diesem array machen. Als nächstes soll kontrolliert werden, wie lange es her ist das er erstellt wurde. DAfür wollte ich ein zweites array mit den zeiten erstellen. Allerdings gelingt mir das nicht. Die Idee die ich hatte mit:
Code: Alles auswählen
with open(DB_csv.csv "r") as csvfile:
datei = csv.reader(csvfile, delimiter=';')
for row in datei:
array_zeit.append(row[1])
print(array_zeit)
Die Einrückung bei den For-Schleifen stimmt nicht. Das sollte gar nicht funktionieren.
Wenn du hier anderen Code zeigst, als du verwendest, dann kann das natürlich dazu führen, dass wir Fehler nicht sehen.
Allgemein solltest du mit 4 Leerzeichen einrücken, statt mit Tabulator oder 8 Leerzeichen.
Zu dem Problem:
Lass dir doch die Werte für row[0] und row[1] während des Durchlaufs anzeigen. Möglicherweise ist eine 2. Spalte leer, dann gibt es den Eintrag in der Liste nicht. Und das führt zu einem IndexError, weil an dem geforderten Index nichts zu finden ist.
Wenn du hier anderen Code zeigst, als du verwendest, dann kann das natürlich dazu führen, dass wir Fehler nicht sehen.
Allgemein solltest du mit 4 Leerzeichen einrücken, statt mit Tabulator oder 8 Leerzeichen.
Zu dem Problem:
Lass dir doch die Werte für row[0] und row[1] während des Durchlaufs anzeigen. Möglicherweise ist eine 2. Spalte leer, dann gibt es den Eintrag in der Liste nicht. Und das führt zu einem IndexError, weil an dem geforderten Index nichts zu finden ist.
Also der Fehler bei der Einrückung ist beim übertragen passiert und steht so nicht in meinem Programm. Sry dafür. Es gibt keine lehre Zeile in der zweiten Spalte und auch keine spalte zwischen den beiden angegebenen. Habe auch versucht mir row[0] bzw row[1] anzeigen zu lassen. bei row[0] funktionert wie gehabt bei row[1] sofort gleicher fehler wir vorher.sparrow hat geschrieben: ↑Mittwoch 6. Februar 2019, 12:33 Die Einrückung bei den For-Schleifen stimmt nicht. Das sollte gar nicht funktionieren.
Wenn du hier anderen Code zeigst, als du verwendest, dann kann das natürlich dazu führen, dass wir Fehler nicht sehen.
Allgemein solltest du mit 4 Leerzeichen einrücken, statt mit Tabulator oder 8 Leerzeichen.
Zu dem Problem:
Lass dir doch die Werte für row[0] und row[1] während des Durchlaufs anzeigen. Möglicherweise ist eine 2. Spalte leer, dann gibt es den Eintrag in der Liste nicht. Und das führt zu einem IndexError, weil an dem geforderten Index nichts zu finden ist.
- __blackjack__
- User
- Beiträge: 13242
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Man sieht in den gezeigten Daten schön das Du die Spaltenüberschriften durch ein *Komma* getrennt hast. Den Rest laut gezeigtem Code aber durch *Semikolons*. Mach das einfach einheitlich und schon hast Du bei den Spaltenüberschriften auch tatsächlich eine zweite Spalte.
Letztlich willst Du das aber gar nicht getrennt einlesen, denn Zeitstempel und ID gehören ja jeweils zusammen. Das sollte man nicht auf ”parallele” Listen verteilen, denn zur Bearbeitung muss man die dann ja doch wieder zusammenführen. Die zu trennen führt im nächsten Verarbeitungsschritt dann einfach nur zu mehr, zusätzlicher Arbeit die man sich sparen kann.
Hör auf Listen als Arrays zu bezeichnen!
Letztlich willst Du das aber gar nicht getrennt einlesen, denn Zeitstempel und ID gehören ja jeweils zusammen. Das sollte man nicht auf ”parallele” Listen verteilen, denn zur Bearbeitung muss man die dann ja doch wieder zusammenführen. Die zu trennen führt im nächsten Verarbeitungsschritt dann einfach nur zu mehr, zusätzlicher Arbeit die man sich sparen kann.
Hör auf Listen als Arrays zu bezeichnen!
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
Vieler dank. Bin nicht ganz sicher was ich Falsch gemacht habe, aber deine Antwort hat mich irgendwie auf den richtigen weg Gebracht__blackjack__ hat geschrieben: ↑Mittwoch 6. Februar 2019, 12:45 Man sieht in den gezeigten Daten schön das Du die Spaltenüberschriften durch ein *Komma* getrennt hast. Den Rest laut gezeigtem Code aber durch *Semikolons*. Mach das einfach einheitlich und schon hast Du bei den Spaltenüberschriften auch tatsächlich eine zweite Spalte.
Letztlich willst Du das aber gar nicht getrennt einlesen, denn Zeitstempel und ID gehören ja jeweils zusammen. Das sollte man nicht auf ”parallele” Listen verteilen, denn zur Bearbeitung muss man die dann ja doch wieder zusammenführen. Die zu trennen führt im nächsten Verarbeitungsschritt dann einfach nur zu mehr, zusätzlicher Arbeit die man sich sparen kann.
Hör auf Listen als Arrays zu bezeichnen!