2016-05-16 16 views
3

我有一個txt文件,有上千行有,例如:如何在Python中讀取一段時間內的行?

line 1 test 
line 2 test 
line 3 test 
line 4 test 
line 5 test 
line 6 test 
line 7 test 
line 8 test 
line 9 test 

我想讀line 1, line 4, line 7, line 10, line 13 ...而忽視line 2, 3, 5, 6, 8, 9...。我如何閱讀這些文字?

回答

2

歐凱,我用for i, line in enumerate(inputFile):

9

解決了這個問題,你可以使用itertools.islice遍歷與給定step

for line in itertools.islice(inputFile, None, None, 3): 
  1. 開始的第一個元素(開始=無)
  2. 文件結束時結束(結束=無)
  3. 每次步進3行,忽略其餘。

請注意,我更喜歡指定step = 3作爲關鍵字,但它似乎islice不支持。 :(

這在概念上類似於閱讀所有的線到內存中,然後取結果列表中分得一杯羹:

all_lines = inputFile.readlines() #very memory inefficient 
for line in all_lines[::3]: #step of 3, start is None and end is None. 

然而islice,很像itertools一切,是非常高效的內存

相關問題