从文本文件中删除一大块文本(Python)

时间:2015-06-30 09:26:45

标签: python file

我正在寻找代码的解决方案。我需要删除一个使用python写入文件的部分,这里的块是5行的例子。

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 个答案:

答案 0 :(得分: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)