with open(args[0]) as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
pass
如何在我的示例中保留第一个迭代元素?
示例数据:
000, 000, 000,
666, 444, 555,
111, 111, 111,
我需要离开000, 000, 000,
答案 0 :(得分:1)
您只需在for循环外调用next()
即可跳过该行
with open(args[0]) as f:
reader = csv.reader(f, delimiter=',')
reader.next()
for row in reader:
doSomething()
答案 1 :(得分:1)
使用next
跳过一行:
with open(args[0]) as f:
reader = csv.reader(f, delimiter=',')
next(reader, None) # Read and skip first line
for row in reader:
pass
小心将第二个参数赋给next
,如果迭代器已经为空(如果是空文件),则返回它,即使你不关心它。否则将引发StopIteration
,如果您碰巧从其他地方的生成器表达式中调用此函数,则可能导致意外行为......
答案 2 :(得分:0)
尝试:
for i in range(1, len(reader)):
row = reader[i]
答案 3 :(得分:0)
我认为你的文件不是很大。如果这个假设是错误的,请忘记这个解决方案。如果它是对的,从语义的角度来看,我认为最好的解决方案是:
with open(args[0]) as f:
reader = csv.reader(f, delimiter=',')
rows = list(reader)
for r in rows[1:]:
do_stuff_with_row(r)
这将您的任务分为两个步骤:
不是最节省内存的解决方案,但在大多数应用场景中,这根本不重要。如果您感兴趣的是内存效率,请使用基于next()
的解决方案。请注意,此方法可以使用itertools
进行改进,尤其是itertools.islice(iterable, start, stop[, step])
。
答案 4 :(得分:-1)
试试这个
with open(args[0]) as f:
index = 0
reader = csv.reader(f, delimiter=',')
for row in reader:
index++
if(index=1):
pass
do somthing