为什么csv.DictReader给我返回没有属性错误?

4 投票
2 回答
11843 浏览
提问于 2025-04-16 11:01

我的CSV文件是

200
Service

我在解释器中输入的代码是

snav = csv.DictReader(open("screennavigation.csv"), delimiter=',')
print snav.fieldnames
['200']

for line in snav:
...     print(line)
...
{'200': 'Service'}

snav["200"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: DictReader instance has no attribute '__getitem__'

我以为DictReader是用来返回一个字典的。我觉得我可能漏掉了什么非常明显的东西。

2 个回答

4

DictReader会生成一个字典的列表。每一行数据本身就是一个字典,就像你在循环中展示的那样。

(其实它是一个可迭代对象,而不是一个列表,但这个意思是一样的。)

3

snav 是一个 DictReader 的实例,不应该像普通字典那样去访问它。当你遍历它的时候,它会生成字典,你可以按照这种方式来访问:你需要用 line['200']

撰写回答