Python: Daten aus einer .csv Datei mit einer Variable vergleichen?

2 Antworten

Dein Code sieht ziemlich umständlich aus. In deiner ersten Schleife iterierst du doch bereits über alle Zeilen der CSV-Datei, wieso öffnest du sie also nochmals zum Öffnen und Schreiben?

Mit DictReader kannst du dir die CSV in eine Map hineinspeichern lassen. Danach folgt die Überprüfung. Dies dürfte so aussehen:

import csv
with open('memory.csv') as csvfile:
  reader = csv.DictReader(csvfile, filenames=('RFIDTag', 'Position'))
  for row in reader:
    if row['RFIDTag'] == tag:
      # do something

Was konkret in der Variable tag steht, solltest du dir zur Laufzeit auch einmal anschauen, falls es beim Vergleich weiterhin Probleme gibt.


floferksy 
Beitragsersteller
 17.07.2018, 10:30

Gibt da nur leider ein kleines Problem:

TypeError: 'filenames' is an invalid keyword argument for this function

Und ich versteh nicht ganz wozu

('RFIDTag', 'Position')

ist, muss ich da dann selbst ne Variable einfügen oder was mach ich damit?

regex9  17.07.2018, 11:14
@floferksy

Wieso habe ich eigentlich die Dokumentation zu der Funktion verlinkt?

Ich habe mich oben vertippt, es muss fieldnames lauten. Dieser Parameter gibt die Keys an, über die die Spalten der CSV aufgerufen werden können.

Habe sowas mal in C# gemacht.. da habe ich mit einer for each Schleife jede Zeile in einen Array geschrieben und NACHDEM die Variablen geschrieben waren habe ich vergleichen. Teste das mal.


floferksy 
Beitragsersteller
 17.07.2018, 09:14

Ich glaub ich hab das ein bisschen unverständlich erklärt..

Die Tags in der .csv Datei stehen schon vor dem Start des Programms drin (werden vorher mit einem anderem Programm dort reingeschrieben)

Mir geht es darum, dass das Programm den Tag der durch ne Schleife immer wieder eingelesen wird mit den Tags vergleicht die in der Datei stehn und wenn in der Datei ein Tag mit der selben ID steht soll der Wert aus der nächsten Zeile ausgegeben werden.