【问题标题】: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.reader、enumerate 和生成器表达式本身都是生成器,因此您一次只能处理一个。