我有一个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....我怎么读这些线?
你可以用itertools.islice给定的迭代step:
for line in itertools.islice(inputFile, None, None, 3):
Run Code Online (Sandbox Code Playgroud)
请注意,我更喜欢指定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,内存效率非常高.