Удалить все строки между двумя конкретными номерами строк - PullRequest
0 голосов
/ 25 мая 2019

Мне нужно удалить все строки между другими строками, основываясь на номерах строк. В этом 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 Ответ

1 голос
/ 25 мая 2019

Это проще, чем ожидалось.

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 внутри.

...