我编写了这段代码,它按顺序打印行:
with open(filename, 'r') as csvfile:
rder = csv.reader(csvfile, delimiter=',')
for row in rder:
print(row)
是否可以使用 hasNext
和 next
方式访问 rder
,即没有 for
构造?例如,如何跳过第一行?
问题很笼统,我想了解一下,能够留在in
之前是什么意思。在 Java 中,这意味着 Iterable
界面,我可以轻松找到它的文档并知道我可以用它做什么。
在Python中,我找不到有关reader
函数返回的内容的信息,并且我不知道可以用它做什么,除了what is written in example 。该示例仅与 for
一起使用。
我可以选择其他的吗?
最佳答案
csv.reader
返回 iterator .
迭代器可以通过 in
在 for
循环中使用:
所以这个:
import csv
rder = csv.reader(my_csv(), delimiter=' ')
for row in rder:
print(row)
给出:
['A', 'header', 'row']
['some', 'data']
['some', 'more', 'data']
['A', 'footer']
可以使用 next()
在 for 循环内读取迭代器:
如果我们需要在 for 循环中使用一行,我们可以这样做:
rder = csv.reader(my_csv(), delimiter=' ')
for row in rder:
print(row)
print('Grabbed one:', next(rder))
给予:
['A', 'header', 'row']
Grabbed one: ['some', 'data']
['some', 'more', 'data']
Grabbed one: ['A', 'footer']
迭代器也可以在 for 循环之外使用:
rder = csv.reader(my_csv(), delimiter=' ')
print('first one:', next(rder))
print('second one:', next(rder))
for row in rder:
print(row)
将给出:
first one: ['A', 'header', 'row']
second one: ['some', 'data']
['some', 'more', 'data']
['A', 'footer']
测试数据:
from io import StringIO
def my_csv():
return StringIO('\n'.join([x.strip() for x in u"""
A header row
some data
some more data
A footer
""".split('\n')[1:-1]]))
关于python - 如何在 for 构造之外迭代读取 Python reader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42982139/