2015-06-30 76 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所在的线条。然后使用itertools.islice通过未来5行,写你的线条一个新的文件中:

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

谢谢你的答复这个作品:)只需要编辑它的代码,它syhould工作谢谢 –

+0

@MikeMarsh不客气! – Kasramvd