Python 3.2 在csv.DictReader中跳过一行

26 投票
3 回答
23980 浏览
提问于 2025-04-16 10:32

我该如何在使用DictReader读取CSV文件时跳过一行记录?

代码:

import csv
reader = csv.DictReader(open('test2.csv'))
# Skip first line
reader.next()
for row in reader:
    print(row)

错误:

Traceback (most recent call last):
  File "learn.py", line 3, in <module>
    reader.next()
AttributeError: 'DictReader' object has no attribute 'next'

3 个回答

6

在Python 2中,使用next()这个方法被认为是个错误,应该用__next__()

现在,next(obj)会调用obj.__next__(),就像调用strlen等内置函数一样,这样才是正确的。

通常情况下,你不会直接调用obj.__next__(),就像你不会直接调用obj.__str__()来获取对象的字符串表示一样。

如果你在写一些不常见的迭代器时,知道这些会很有用。

7

从Python 2.6开始,你应该用next(foo)来代替foo.next()。

28

你可以用 next(reader) 来代替。

来源:csv.DictReader 文档

撰写回答