删除文件的特​​定行

时间:2017-05-23 13:39:34

标签: python regex file file-writing

您好我试图删除文件中的一行,但想要保留其余部分。

f = open("myfile.html").read()
lines = f.readlines()
a = findall('<h2>\$.*', f)
f.close()
f = open("myfile.html","w")
for line in lines:
  if line!= a[0]:
    f.write(line)
f.close()

当我使用上面的代码时,我的html文件中的所有其他行都被删除了。

试图摆脱的文字:

        <h2>Thank you</h2>
<h2>Please come again</h2> #Get rid of this line

2 个答案:

答案 0 :(得分:1)

试试这个:

with open("myfile.html", "w+") as f:
    content = f.read()
    f.write(re.sub(r'<\s*h2[^>]*>(.*?)<\s*/\s*h2>', '', content))

但正如@Willem Van Onsem建议的那样,不要使用正则表达式来处理XML / HTML,使用XML解析器,1x的BeautifulSoup会更加健壮。

答案 1 :(得分:0)

当您写入同一文件时,内容将被覆盖。因此,您需要打开新文件并将该文件写为:

f = open("NEWFILE.html","w")
for line in lines:
  if line!= a[0]:
    f.write(line)
f.close()