如何在Python中读取间隔中的行?

fly*_*use 3 python

我有一个txt文件,那里有数千行,例如:

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
Run Code Online (Sandbox Code Playgroud)

我希望阅读line 1, line 4, line 7, line 10, line 13 ...但忽略line 2, 3, 5, 6, 8, 9....我怎么读这些线?

Tad*_*sen 9

你可以用itertools.islice给定的迭代step:

for line in itertools.islice(inputFile, None, None, 3):
Run Code Online (Sandbox Code Playgroud)
  1. 从第一个元素开始(start = None)
  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.
Run Code Online (Sandbox Code Playgroud)

然而islice,就像其他内容一样itertools,内存效率非常高.