Я новое программирование на python (2.x) и даже ищущий часы, я не мог решить проблему. Python возвращает исключение KeyErrorPython возвращает KeyError в csv.DictReader()
The (объект) .csv файл является:
id,name,type
1,low,player
Код питон:
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 возвращает:
Self.type = config['type']
KeyError: 'type'
Странная вещь заключается в том, что как в csv, так и в коде python заголовок столбца не содержит ошибки ввода. Когда я меняю имя столбца «id», ошибка возвращается к новому заголовку (ранее «id»). (То же самое происходит, когда я добавляю еще один заголовок и пытаюсь его прочитать)
Любая помощь приветствуется и сожалеет о неудобствах. благодарен
У вас есть дополнительное пространство вокруг запятых поэтому реальные имена столбцов ' 'идентификатор ''' имя ''& '' type''. Попробуйте напечатать строку перед вызовом 'create_item', чтобы увидеть ее на практике. – niemmi
Дополнительные места были моей ошибкой, набрав сообщение. Извини за это. Возврат при печати строки: '{' id ':' 1 ',' name ':' low ',' type ':' player '}', но после этого ошибка сохраняется –
[Catch the exception] (https://docs.python.org/3/tutorial/errors.html#handling-exceptions), а в шрифте except print '' 'row''' - это ключи, что вы ожидали? – wwii