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)
现在像 str
、len
等一样调用 obj.__next__()
。
你通常不会直接调用obj.__next__()
,就像如果你想要一个对象的字符串表示你不会直接调用obj.__str__()
一样。
如果您发现自己在编写不寻常的迭代器,很容易知道
【讨论】:
感谢您的上下文!以上是关于Python 3.2 在 csv.DictReader 中跳过一行的主要内容,如果未能解决你的问题,请参考以下文章
使用 python_requires 要求 Python 2.7 或 3.2+