当字符串很长时,如何在Python中的一对子字符串之间删除文本

时间:2015-08-12 00:37:33

标签: python regex parsing

我正在解析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个字符,并且我得到了一个糟糕的字符范围错误。

有人有什么想法吗?

1 个答案:

答案 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:]