【问题标题】:Delete a chunk of text from a text file (Python)从文本文件中删除一段文本(Python)
【发布时间】:2015-06-30 09:26:44
【问题描述】:

我正在寻找代码的解决方案。我需要使用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行,不会删除hole chunk

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()   

有人看到这个问题,可以帮我最终完成吗?

【问题讨论】:

  • 我投票结束这个问题,因为这不是代码编写或教程服务
  • 请详细说明你的问题,我一个字也说不出来!
  • 我试过了
  • 到目前为止,我可以向某人展示我的代码,但我已经尝试了近 4 个小时,但我无法解决这个问题
  • 您的代码中有很多不必要的步骤。看看Deleting a specific line in a file,应该会有帮助。

标签: python file


【解决方案1】:

您可以阅读您的行,直到您到达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)

【讨论】:

  • 感谢您的回复,这很有效:) 只需将其编辑为代码即可,谢谢
猜你喜欢
  • 2023-02-08
  • 2022-01-27
  • 2018-09-21
  • 2015-07-30
  • 1970-01-01
  • 2017-01-28
  • 2013-05-13
  • 1970-01-01
相关资源
最近更新 更多