Ich bin neue Programmierung auf Python (2.x) und sogar auf der Suche nach Stunden konnte ich das Problem nicht lösen. Python gibt eine KeyErrorPython gibt KeyError in csv.DictReader() zurück
Die (Objekt) CSV-Datei ist:
id,name,type
1,low,player
Der Python-Code ist:
import csv
class Item(object):
def setup(self, config):
self.config = config
self.label = config['label']
self.name = config['name']
self.type = config['type']
def create_item(config):
new_item = Item()
new_item.setup(config)
return(new_item)
def populate():
all_items = {}
f = open('object.csv', 'rb')
reader = csv.DictReader(f, delimiter = ',')
for row in reader:
new_item = (create_item(row))
all_items[new_item.label] = new_item
return(all_items)
Python zurück:
Self.type = config['type']
KeyError: 'type'
Das Seltsame ist, dass sowohl in csv als auch im Python-Code die Spaltenüberschrift keinen Tippfehler enthält. Wenn ich den Namen der Spalte "id" ändere, kehrt der Fehler zum neuen Header zurück (zuvor "id"). (Das gleiche passiert, wenn ich einen anderen Header hinzufügen und versuche, es zu lesen)
Jede Hilfe ist willkommen und Entschuldigung für die Unannehmlichkeiten. dankbar
Sie haben mehr Platz um die Kommas, so dass die realen Spaltennamen ' 'id '' sind, '' name '' & '' type''. Versuchen Sie, eine Zeile auszudrucken, bevor Sie 'create_item' aufrufen, um sie in der Praxis zu sehen. – niemmi
Die zusätzlichen Leerzeichen waren mein Fehler beim Schreiben der Post. Das tut mir leid. Die Rückgabe beim Drucken der Zeile lautet: '{' id ':' 1 ',' name ':' niedrig ',' type ':' player '}, aber danach bleibt der Fehler bestehen –
[Catch the exception] (https://docs.python.org/3/tutorial/errors.html#handling-exceptions) und in der Ausnahme-Suite print '' 'row''' - sind die Schlüssel das, was Sie erwartet haben? – wwii