How to iterate over every n-th line from a file?

烈酒焚心 提交于 2021-02-13 12:19:28

问题


First, I am new to Python and did search for answers, but no luck. So far what I found only returns a one line like my code below. I tried other solutions like itertools.islice but always only get a one line back.

I have a file called data.txt containing lines of data:

This is line one
This is line two 
This is line three 
This is line four 
This is line five 
This is line six 
This is line seven 
...

I have the following code:

with open('data.txt', 'r') as f:
    for x, line in enumerate(f):
        if x == 3:
            print(line)

In this case it only prints

"This is line four".

I do understand why but how do I take it from here and have it print the lines 4, 7, 10, 13, ...?


回答1:


The return value of open is an iterator (and thus, iterable), so you can pass it to itertools.islice:

islice(iterable, start, stop[, step]) --> islice object
Return an iterator whose next() method returns selected values from an iterable. [...]

Demo:

data.txt:

line1
line2
line3
line4
line5
line6
line7
line8
line9
line10
line11
line12
line13

Code:

from itertools import islice

with open('data.txt') as f:
    for line in islice(f, 3, None, 3):
        print line,  # Python3: print(line, end='')

Produces:

line4
line7
line10
line13



回答2:


You need to use https://en.wikipedia.org/wiki/Modular_arithmetic

with open('data.txt', 'r') as f:
    for x, line in enumerate(f):
        if x and x % 3 == 0:
            print(line)


来源:https://stackoverflow.com/questions/36487709/how-to-iterate-over-every-n-th-line-from-a-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!