提问者:小点点

如何在Python中替换大文件中的每个HTML部分?


我有几百个长文件,每个文件中都有重复的HTML块,我将不需要用于进一步的文本分析,因此我想去掉它们,因为它们在分析这些文件时占用了相当多宝贵的内存。

这些HTML块偶尔会被换行符打破。 与常规HTML一样,可移动块始终以开头,以结尾。

我的方法如下:

content = inputfile.read()
pattern = re.compile('<!DOCTYPE.*[\s\S]*<\/html>')
match = pattern.findall(content)

但是,这总是只返回一个单一的匹配。 正则表达式正确地标识了的第一个实例和的最后一个实例。 因此,即使我在文档中有10,000个HTML块要使用

content = re.sub(pattern, '', content)

只找到了一个匹配项,因此,几乎我的整个文件都被删除了。

我怎样才能在整个文档中分别找到所有的HTML块呢?

附注:我用的是Python3.x,我的操作系统是Windows10。


共1个答案

匿名用户

默认情况下,正则表达式是贪婪的。 这意味着它会搜索直到找到最后一个实例。 按以下方式更改表达式:

pattern = re.compile('<!DOCTYPE.*?<\/html>', flags=re.DOTALL)