2017-05-23 165 views
1

嗨,我试图删除我的文件中的一行,但想保留我的其余行。删除文件的特​​定行

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 
+4

不要用正则表达式处理HTML/XML ... –

+0

@WillemVanOnsem,[no fear](https://gist.github.com/mgsisk/1094230)! =) – grundic

+0

@grundic:我的观点正是...... –

回答

0

文本试图摆脱的。所以,你需要打开新的文件,并写入该文件为:

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

试试这个:用于XML/HTML

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

但作为@Willem范Onsem建议,不要使用正则表达式,使用BeautifulSoup的XML解析器lxml更加健壮。