2015-06-30 2 views
-4

Я ищу решение для кода. Мне нужно удалить раздел записи в файле с помощью python, кусок 5 строк, вот пример.Удалить фрагмент текста из текстового файла (Python)

Numberplate: BN30CWS 

Time In: Time In: 11:11:3 

Time Out: Time In: 11:11:51 

Speed: Your Speed: 48MPH 

Was this vechile speeding?: No 

(без пробелов)

Так что, если я вхожу BN30CWS я хочу, чтобы эти 5 строк, которые будут удалены из файла (fileDocStandard) Пожалуйста, помогите, я попытался сделать этот рабочий код в течение 4 часов в настоящее время, и это то, что я придумал, но он удаляет только 1 строку, а также не удалять отверстие кусок

def deldata(): 
file = open(fileDocStandard, "r") 
array = [] 
for line in file: 
    array.append(line) 
file.close() 

for i in range(len(array)): 
    print (array[i]) 
let = input("Please enter the plate you want to delete ") 
let = let.upper() 
for i in range(len(array)): 
    arrayitem = array[i] 

    if (arrayitem[0]) == (let): 
     del (array[i]) 
     break 
file = open(fileDocStandard, "w") 
file.close() 
file = open(fileDocStandard, "a") 
for i in range(len(array)): 
    file.write(array[i]) 
file.close() 

Кто-нибудь видел этот вопрос, и может помочь мне, наконец, закончить это?

+1

Я голосую, чтобы закрыть это вопрос как не относящийся к теме, потому что это не программа для написания кода или учебника – jonrsharpe

+0

, пожалуйста, подробно расскажите о своей проблеме, я не мог получить от этого слова! – CrakC

+0

Я пробовал это да, я пробовал использовать массивы, чтобы прочитать файл, но я не могу понять, как его удалить или выделить больше, чем просто 1 строка –

ответ

0

Вы можете прочитать свои строки, пока не достигнете линии, в которой находится BN30CWS. затем перейти на следующий 5 строку, используя itertools.islice и написать свои строки в новый файл:

from itertools import islice 

with open(fileDocStandard) as f,open(newfile) as out: 
    for line in f: 
     if 'BN30CWS' in f: 
      f=islice(f,5,None) 
     out.write(line) 

И если вы хотите, чтобы перезаписать файл, который вы можете использовать tempfile:

with tempfile.NamedTemporaryFile(delete=False) as outfile: 
    with open(fileDocStandard) as f: 
     for line in outfile: 
      if 'BN30CWS' in line: 
       outfile=islice(outfile,5,None) 
      out.write(line) 
    os.rename(outfile.name, fileDocStandard) 
+0

Спасибо за ответ, это работает :) просто нужно отредактировать его в коде, и он будет работать спасибо –

+0

@MikeMarsh Добро пожаловать! – Kasramvd

Смежные вопросы