我正在使用该csv库来解析文件.我需要跳过6行并直接进入第7行并解析其余部分.我能跑reader.next()6次,但看起来很奇怪:
reader = csv.reader(csvfile)
reader.next()
reader.next()
reader.next()
reader.next()
reader.next()
reader.next()
for row in reader:
print row
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有办法以另一种方式跳过6行?
jua*_*aga 10
是.用途itertools.islice:
from itertools import islice
reader = csv.reader(csvfile)
for row in islice(reader, 7, None):
print row
Run Code Online (Sandbox Code Playgroud)
这islice需要一个可迭代的,然后下面的位置参数很像你典型的列表切片开始 - 停止步骤:
>>> x = list(range(14))
>>> x[7:None]
[7, 8, 9, 10, 11, 12, 13]
>>> x[7:]
[7, 8, 9, 10, 11, 12, 13]
>>>
>>> list(islice(x, 7, None))
[7, 8, 9, 10, 11, 12, 13]
Run Code Online (Sandbox Code Playgroud)
但是,不允许使用负索引.
>>> list(islice(x, -1, None))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Indices for islice() must be None or an integer: 0 <= x <= maxint.
>>>
Run Code Online (Sandbox Code Playgroud)
但是,它仍然非常灵活,因此,例如,从第一行开始每隔一行(即偶数行):
for row in islice(reader, None, None, 2):
print row
Run Code Online (Sandbox Code Playgroud)
或者从第二行开始的每隔一行(即奇数行):
for row in islice(reader, 1, None, 2):
print row
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |