如何删除python中某一行以上的所有行

时间:2015-11-14 04:08:23

标签: python parsing

我有一个html文件,我要删除以字符串<!DOCTYPE html开头的行上方的所有行

示例:

HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=utf-8
Date: Sat, 22 Mar 2015 07:56:52 
Connection: close
Content-Length: 2959

<!DOCTYPE html...... extra lines ...

因此,当我搜索字符串<!DOCTYPE的出现时,我需要删除所有行,包括此特定行上方的空行。在linux中,我们在grep中有一个选项,可以搜索上方和下方的行,然后将其删除。我们可以在Python中做类似的事情吗?

2 个答案:

答案 0 :(得分:1)

stop = "<!DOCTYPE html"

with open('input.html') as infile, open('output.html', 'w') as outfile:
    buff = []
    for line in infile:
        if not line.strip():
            buff.append(line)
            continue
        if line.strip() == stop: break
        outfile.write(''.join(buff))
        buff = []
        outfile.write(line)

答案 1 :(得分:0)

不确定您的确切意思,但是我认为您的意思是打开HTML文件,然后尝试编辑其中的内容? 这可能是非常规的,但是尝试将其打开以进行读取,使用readlines()获取并存储所有行。过滤掉不需要的行。 然后关闭文件,再次打开以进行写入,然后将您的行粘贴在其中(这将覆盖文件中的所有当前内容)。这样一来,您也可以删除中间不需要的行。