删除两个特定行号之间的所有行

时间:2019-05-25 01:19:29

标签: python python-3.x with-statement

我需要根据行号删除其他行之后的所有行。 在这个file.py中,如何删除2º和6º行之间的所有文件?

文件:

1
2
3
4
5
6
7
8
9
10

使用此代码,我可以删除特定行上方和/或下方的所有行。但是我不能

代码:

with open('file.py', 'r') as fin:
    data = fin.read().splitlines(True)
    with open('ab.py', 'w') as fout:
        fout.writelines(data[2:])

我尝试了第二个代码,在这里我只能删除1条特定的行(当我尝试删除1条以上的行时,效果并不理想)

del_line1 = 1   
with open("file.py","r") as textobj:
    list = list(textobj)   
del list[del_line1 - 1]    
with open("file.py","w") as textobj:
   for n in list:
        textobj.write(n)

1 个答案:

答案 0 :(得分:1)

比预期的要容易。

dellist = [3, 4, 7] #numbers of the lines to be deleted

with open('data.txt') as inpf:
    with open('out.txt', 'w') as of:
        for i, line in enumerate(inpf):
            if i+1 not in dellist: #i+1 because i starts from 0
                of.write(line)

您阅读了每一行,并且如果该行号不在禁止行列表中,则将该行写入另一个文件。

因此,假设您使用原始输入,上面的代码将给出:

1
2
5
6
8
9
10

注意:这里我将文件称为data.txt,最好将.py扩展名用于仅包含python代码的文件。