【发布时间】:2017-07-09 04:58:50
【问题描述】:
我是 python(2.x) 上的新编程人员,甚至找了几个小时都无法解决问题。 Python 返回一个 KeyError
(object).csv 文件是:
id,name,type
1,low,player
python代码是:
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”)。 (当我添加另一个标题并尝试读取它时也会发生同样的情况)
欢迎任何帮助,对于给您带来的不便,我们深表歉意。 感激不尽
【问题讨论】:
-
逗号周围有多余的空格,因此真正的列名是
'id '、' name '和' type'。在调用create_item之前尝试打印一行以在实践中查看。 -
多余的空格是我输入帖子的错误。对于那个很抱歉。我打印该行时的返回是:'{'id': '1', 'name': 'low', 'type': 'player'}' 但之后,错误仍然存在
-
Catch the exception 和除套件打印
row- 键是您所期望的吗?