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

时间:2016-05-16 01:15:52

标签: 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

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

2 个答案:

答案 0 :(得分:9)

您可以使用itertools.islice与给定的step进行迭代:

for line in itertools.islice(inputFile, None, None, 3):
  1. 从第一个元素开始(start = None)
  2. 文件结束时(结束=无)
  3. 每次步行3行,忽略其余部分。
  4. 请注意,我更倾向于将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.
    

    然而isliceitertools中的其他所有内容非常相似,效率非常高。

答案 1 :(得分:2)

Okey,我使用for i, line in enumerate(inputFile):

解决了这个问题