Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

python

file

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, ...?

like image 790
buldozer Avatar asked Nov 17 '25 11:11

buldozer


1 Answers

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
like image 119
timgeb Avatar answered Nov 19 '25 23:11

timgeb



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!