2015-02-23 64 views
3

我有一个文件,我试图读取(并写入另一个文件)每四行。我正在使用的解决方案没有给出预期的结果。在Python中读取每第四行

sample.txt的 line1 line2 line3 line4 line5 line6 line7 line8 line9 line10

script.py

from itertools import islice 
with open('sample.txt') as fin, open('output.txt','w') as fout: 
     fout.writelines(islice(fin,None,None,4)) 

现在输出文件给我行1,LINE5,line9而不是4号线,line8。

我会如何改变这种情况以获得理想的结果?

+1

出色的使用'islice' – 2015-02-23 15:49:21

+0

你最终会将空白行添加到文件中,以便稍后您可能想要了解哪些情况会成为问题。 – 2015-02-23 15:50:10

回答

7

你快到了。 islice附带start参数。就你而言,这是第二个,你已经设置为None。试试这个:

fout.writelines(islice(fin,3,None,4)) # line with index 3 is the fourth line 
+1

啊完美。就是这样。看起来我很接近。非常感谢你! – lenhun 2015-02-23 15:50:11

0

试试这个

islice(fin,3,None,4) # start from 4 
0

这也可以通过默认列表切片做(不itertools):

#!/usr/bin/env python2 
with open('sample.txt') as fin, open('output.txt', 'w') as fout: 
fout.write(''.join(fin.readlines()[3::4]))