2014-12-05 3 views
0

У меня есть файл, где мне нужно удалить некоторые строки в середине файла.Python: удалить несколько строк в файлах

Линии, которые нужно удалить, имеют ключевое слово в начале и в конце.

Пример:

aaaaaaaaaaaaaaaaa 
bbbbbbbbbbbbbbbbb 
ccccccccccccccccc 
ddddddddddddddddd 
Begintoremove 
eeeeeeeeeeeeeeeee 
fffffffffffffffff 
ggggggggggggggggg 
hhhhhhhhhhhhhhhhh 
EndofRemove 
iiiiiiiiiiiiiiiii 
jjjjjjjjjjjjjjjjj 
kkkkkkkkkkkkkkkkk 
lllllllllllllllll 

Мне нужно иметь сценарий, конечно, в Python, чтобы удалить часть текста между ключевым словом "Begintoremove" и "EndofRemove".

Как вы думаете, возможно ли это сделать, и если да, то с какой функцией Python?

+1

Я думаю, что да, но вы должны попробовать это первый –

+1

, конечно, это можно сделать, просто попробуй;-) . Прочитайте файл linewise и для каждой строки, которую вы читаете, используйте функцию 'line.startswith (« Begintoremove »)', чтобы начать удаление, пока 'line.startswith (« EndRemove ») не будет True – Tengis

ответ

0
f = open('filename') 
lines = f.readlines() 
f.close() 

result = [] 
bool_remover = False 
for line in lines: 
    if line == "Begintoremove" : bool_remover = True 
    if not bool_remover : result.append(line) 
    if line == "EndofRemove" : bool_remover = False 

В результате я не включаю «Begintoremove» и «EndofRemove».

1
with open('file_path', 'r') as my_file: 
    file_lines = my_file.readlines() 

first_part = file_lines[:file_lines.index('Begintoremove')] 
second_part = file_lines[file_lines.index('Endtoremove') + 1:] 

lines = first_part + second_part 
with open('file_path', 'w') as my_file: 
    my_file.writelines(lines) 
0

прочитанная строка из файла и скопировать их на второй в зависимости от текущего copying состояния:

copying = True 
with open('input_file.txt', 'rt') as inf, open('output_file.txt', 'wt') as outf: 
    for line in inf: 
     if copying: 
      if line.startswith('Begintoremove'): 
       copying = False 
      else: 
       outf.write(line) 
     elif line.startswith('EndofRemove'): 
      copying = True 
Смежные вопросы