Dictionary - Fehlermeldung bei Wertübergabe
Verfasst: Donnerstag 9. Februar 2012, 19:19
Hallo zusammen,
Um einen Vergleich in einem Dictionary machen zu können, muß ich die vierte Spalte dieser Datei (Ausschnitt) bearbeiten.
Dabei muß ich den letzten Teil (Herstellernamen) der vierten Spalte verschwinden lassen.
Beispiel:
Problem dabei, ist dieser Bereich
Hier kommt als Fehlermeldung:
Also lasse ich die Kommas im String zählen, ziehe vom Ergebnis -1 ab und definiere den neuen String.
Anschließend möchte ich dieses Ergebnis in einem Dictionary vergleichen können.
Was mache ich falsch, bzw. wo ist mein Denkfehler?
Grüße Nobuddy
Um einen Vergleich in einem Dictionary machen zu können, muß ich die vierte Spalte dieser Datei (Ausschnitt) bearbeiten.
Code: Alles auswählen
03 127 0135 PATCH-PANEL PATCH-PANEL,-DIGITUS
03 127 0172 PATCH-PANEL PATCH-PANEL,-EQUIP
03 127 0331 PATCH-PANEL PATCH-PANEL,-LOGILINK
03 127 0568 PATCH-PANEL PATCH-PANEL,-TELEGÄRTNER
03 128 0000 INDUSTRIAL-ETHERNET,-PASSIV PATCHKABEL,-KAT.5,-TELEGÄRTNER
03 128 0000 INDUSTRIAL-ETHERNET,-PASSIV PATCHKABEL,-KAT.7,-TELEGÄRTNER
03 128 0000 PATCHKABEL,-KAT.5E,-ROLLENWARE PATCHKABEL,-ROLLENWARE,-KAT.5E,-DIGITUS
03 128 0000 PATCHKABEL,-KAT.5E,-ROLLENWARE PATCHKABEL,-ROLLENWARE,-KAT.5E,-DRAKA
03 128 0000 PATCHKABEL,-KAT.5E,-ROLLENWARE PATCHKABEL,-ROLLENWARE,-KAT.5E,-EQUIP
03 128 0000 PATCHKABEL,-KAT.5E,-ROLLENWARE PATCHKABEL,-ROLLENWARE,-KAT.5E,-LOGILINK
03 128 0000 PATCHKABEL,-KAT.6,-ROLLENWARE PATCHKABEL,-ROLLENWARE,-KAT.6,-DRAKA
03 128 0000 PATCHKABEL,-KAT.6,-ROLLENWARE PATCHKABEL,-ROLLENWARE,-KAT.6,-LOGILINK
03 128 0000 PATCHKABEL,-KAT.7,-ROLLENWARE PATCHKABEL,-ROLLENWARE,-KAT.7,-DRAKA
03 128 0135 INTERNET-KAMERAS-/-WEBCAMS INTERNET-KAMERAS-/-WEBCAMS,-DIGITUS
03 128 0214 INTERNET-KAMERAS-/-WEBCAMS INTERNET-KAMERAS-/-WEBCAMS,-GENIUS
Beispiel:
Da es öfters vorkommt, mehr als nur ein Komma in dem String zu haben, das berücksichtigt werden muß, habe ich ein Konstrukt dazu erstelltINTERNET-KAMERAS-/-WEBCAMS,-DIGITUS
INTERNET-KAMERAS-/-WEBCAMS
Code: Alles auswählen
with codecs.open(subgroupindex_path, "r") as infile:
reader = csv.reader(infile, delimiter="\t", quotechar="^")
subgroupindex = {}
for line in reader:
subgroupindex[line[0], line[1]] = line[2]
with codecs.open(basegroup_path, "r") as infile:
reader = csv.reader(infile, delimiter="\t", quotechar="^")
daten = []
for item in reader:
if ',' in item[4]:
y = item[4].count(',')
y = y - 1
if y > 1:
a = item[4].split(',')[:y]
b = (item[0], a)
p = subgroupindex.get(b, '---')
else:
a = item[4].split(',')[0]
b = (item[0], a)
p = subgroupindex.get(b, '---')
Code: Alles auswählen
if y > 1:
a = item[4].split(',')[:y]
b = (item[0], a)
p = subgroupindex.get(b, '---')
Ich habe mir das eigentlich so vorgestellt, daß wie in diesem BeispielTypeError: unhashable type: 'list'
drei Kommas enthalten sind.PATCHKABEL,-ROLLENWARE,-KAT.5E,-DIGITUS
Also lasse ich die Kommas im String zählen, ziehe vom Ergebnis -1 ab und definiere den neuen String.
Anschließend möchte ich dieses Ergebnis in einem Dictionary vergleichen können.
Was mache ich falsch, bzw. wo ist mein Denkfehler?
Grüße Nobuddy