我正在解析HTML页面并希望删除'<!DOCTYPE html>'之间的所有文字并且“算上绿色”。例如,如果文本文件(TestFile.txt)中的字符串是
<!DOCTYPE html> FOOBAR计数绿色
我想返回
<!DOCTYPE html>数绿色
我的代码是
import re
# open text file
with open ("TestFile.txt", "r") as myfile:
data=myfile.read().replace('\n', '')
# find text at start to replace
removeStartCompile = re.compile('<!DOCTYPE html>(.*?)count green')
removeStartSearch = removeStartCompile.search(data)
removeStart = removeStartSearch.group(1)
data = re.sub(removeStart,"",data)
print (data)
这是一个例子而且有效。但是,当我将文本文件扩展为完整的html代码(你可以想象它变得非常大)时,我最终试图解析大约300,000个字符,并且我得到了一个糟糕的字符范围错误。
有人有什么想法吗?
答案 0 :(得分:2)
您可以尝试使用Python的stdlib字符串函数,而不是使用正则表达式:
starttext = "<!DOCTYPE html>"
endtext = "count green"
start = data.index(starttext) + len(starttext)
end = data.index(endtext)
output = data[:start] + data[end:]