【问题标题】:How to iterate every 10 lines on CSV file如何在 CSV 文件上每 10 行迭代一次
【发布时间】:2016-06-30 01:51:05
【问题描述】:
with open(example.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')

    for row in readCSV:
        Do something.

我需要在 for 循环中每 10 行跳过一次,但是执行 readCSV[::10] 将不起作用。

【问题讨论】:

  • 循环增加行数,如果 rowNum % 10 == 0.. 跳过

标签: python csv for-loop


【解决方案1】:
with open('example.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    for i, row in enumerate(readCSV):
        if i % 10 == 0:
            # do stuff with every 10th row

【讨论】:

  • 使用enumerate 比手动保存计数器更清晰,更不容易出错。
  • 不熟悉enumerate,但您需要第二个for循环吗?你可以让第一个 for 循环说for i, row in enumerate(readCSV):
【解决方案2】:

这归结为从生成器中迭代每 10th 个元素,这可以通过 itertools.islice 完成:

import itertools
import csv

with open('example.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')

    for row in itertools.islice(readCSV, None, None, 10):
        # Do something.

这相当于在生成器上对列表进行切片(如list[::10])。

【讨论】:

    【解决方案3】:

    使用迭代器跟踪索引

    with open(example.csv') as csvfile:
        readCSV = csv.reader(csvfile, delimiter=',')
        i = 0
        for row in readCSV:
            if i%10 = 0:
                continue
            Do something.
            i += 1
    

    【讨论】:

      【解决方案4】:

      你可以把它添加到

      count = 0
      for line in f:
          count+=1
          if count % 10 == 0: 
              print line
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-16
        • 1970-01-01
        • 2020-08-22
        • 1970-01-01
        • 2019-09-06
        • 2019-12-15
        • 2021-05-29
        相关资源
        最近更新 更多