如何离开第一个迭代元素?

时间:2014-03-07 15:32:21

标签: python

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,

5 个答案:

答案 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