Python 3.2 在 csv.DictReader 中跳过一行

Posted

技术标签:

【中文标题】Python 3.2 在 csv.DictReader 中跳过一行【英文标题】:Python 3.2 skip a line in csv.DictReader 【发布时间】:2011-06-14 20:03:15 【问题描述】:

使用 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'

【问题讨论】:

与此问题无关,但您应该像这样打开文件:open('test2.csv', newline='') ... 查看 csv.reader 文档 我阅读了 CSV.Reader 文档。此属性似乎有助于保留多行 CSV。由于我的 CSV 文件是多行的,在我的打开命令中添加 newline='' 是否仍然是谨慎的? 【参考方案1】:

你改用next(reader)

来源:csv.DictReader documentation

【讨论】:

这是因为它是 Python 3,而不是 Python 2。【参考方案2】:

从 Python 2.6 开始,您应该使用 next(foo) 而不是 foo.next()。

【讨论】:

【参考方案3】:

在 python2 中将方法称为 next() 而不是 __next__() 被认为是一个错误

next(obj) 现在像 strlen 等一样调用 obj.__next__()

你通常不会直接调用obj.__next__(),就像如果你想要一个对象的字符串表示你不会直接调用obj.__str__()一样。

如果您发现自己在编写不寻常的迭代器,很容易知道

【讨论】:

感谢您的上下文!

以上是关于Python 3.2 在 csv.DictReader 中跳过一行的主要内容,如果未能解决你的问题,请参考以下文章

使用 python_requires 要求 Python 2.7 或 3.2+

在 Python 3.2 中使用 MFC .dll 文件

在 Python 3.2 中使用 HTMLParser

在 Python >= 3.2 中将缓存存储到文件 functools.lru_cache

禁用 Python 3.2 资源警告

Python 3.2 在 csv.DictReader 中跳过一行