【问题标题】:Python 3.2 skip a line in csv.DictReaderPython 3.2 在 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='' 是否仍然是谨慎的?

标签: python csv python-3.x


【解决方案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__()一样。

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

    【讨论】:

    • 感谢您的上下文!
    猜你喜欢
    • 2013-12-09
    • 2012-12-18
    • 2015-02-26
    • 2014-03-03
    • 2015-09-10
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    相关资源
    最近更新 更多