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