使用Python在一个大的文本文件中跳过某些行。

问题描述 投票:0回答:1

我有一个大的文本文件(几GB)。我想跳过固定数量的行,这些行在我的文本文件中重复了几次。我写了下面的代码,也能正常工作。我只是想知道是否有人能提出一个更有效的方法来完成这个任务。

coordinate = []
with open('Lammps_D.txt', 'r') as file:
    data = file.readlines()
    data_iter = iter(data)
    for lines in data_iter:
        if lines[0] == "I":
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
            next(data_iter)
        else:
            coordinate.append(lines)
python-3.x for-loop text-files
1个回答
1
投票

一次性读取所有的行,然后转换成迭代器,可能比单纯使用文件对象作为迭代器的效率要低,用 readline.

coordinate = []
with open('Lammps_D.txt', 'r') as file:
    line=file.readline()
    while line:
      if line[0]=='I':
        for i in range(9): line=file.readline()
      else:
        coordinate.append(line)
        line=file.readline()

0
投票

据我所知,你跳过了重复的行,所以你跳过的所有行都满足了条件 if lines[0] == "I"在这种情况下,你可以使用 itertools.filterfalse

from itertools import filterfalse

with open('Lammps_D.txt', 'r') as file:
    data = file.readlines()
    coordinate = filterfalse(lambda x: x[0] == "I", data)

坐标现在是生成器,如果你想把它作为一个列表,只需添加

coordinate = list(coordinate)
© www.soinside.com 2019 - 2024. All rights reserved.