【问题标题】:How to read only a specific range of lines out of a csv file with python?如何使用python从csv文件中只读取特定范围的行?
【发布时间】:2015-06-22 21:17:31
【问题描述】:

例如,我如何只能读取此 csv 文件中的第 5000 行到第 6000 行?此时“for row in reader:”当然会遍历所有行。

所以我有这些台词:

with open('A.csv', 'rt') as f:
     reader = csv.reader(f, delimiter=';')
     for row in reader:
           response = urllib2.urlopen(row[12])

此代码用于打开特定的 url 链接。

【问题讨论】:

    标签: python python-3.x csv


    【解决方案1】:

    由于 csv reader 对象支持迭代,您可以简单地使用 itertools.islice 来切片您想要的任何特定部分。

    from itertools import islice
    
    with open('A.csv', 'rt') as f:
         reader = csv.reader(f, delimiter=';')
         for row in islice(reader,5000,6000):
               response = urllib2.urlopen(row[12])
    

    【讨论】:

      【解决方案2】:

      您可以在 for 循环中使用生成器和 enumerate

      with open('A.csv', 'rt') as f:
           reader = csv.reader(f, delimiter=';')
           for row in (r for i, r in enumerate(reader) if 5000<=i<=6000):
                 response = urllib2.urlopen(row[12])
      

      由于csv.readerenumerate 和生成器表达式本身都是生成器,因此您一次只能处理一个。

      【讨论】:

        猜你喜欢
        • 2021-08-22
        • 2012-06-24
        • 1970-01-01
        • 1970-01-01
        • 2015-09-06
        • 2021-11-12
        • 2019-08-12
        • 2015-10-25
        • 1970-01-01
        相关资源
        最近更新 更多