Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当字符串很长时,如何删除Python中一对子字符串之间的文本_Python_Regex_Parsing - Fatal编程技术网

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

当字符串很长时,如何删除Python中一对子字符串之间的文本,python,regex,parsing,Python,Regex,Parsing,我正在分析中的HTML页面,希望删除“”和“绿色计数”之间的所有文本。例如,如果文本文件(TestFile.txt)中的字符串是 FOOBAR计数绿色 我想回去 格林伯爵 我的代码是 import re # open text file with open ("TestFile.txt", "r") as myfile: data=myfile.read().replace('\n', '') # find text at start to replace removeStartCo

我正在分析中的HTML页面,希望删除“”和“绿色计数”之间的所有文本。例如,如果文本文件(TestFile.txt)中的字符串是

FOOBAR计数绿色

我想回去

格林伯爵

我的代码是

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)
重新导入
#打开文本文件
打开(“TestFile.txt”、“r”)作为我的文件:
data=myfile.read().replace('\n','')
#在开始处查找要替换的文本
removeStartCompile=re.compile(“(*)绿色计数”)
removeStartSearch=removeStartCompile.search(数据)
removeStart=removeStartSearch.group(1)
data=re.sub(removeStart,“,数据)
打印(数据)
这是一个很好的例子。但是,当我将文本文件扩展为完整的html代码(您可以想象它非常大)时,我最终尝试解析大约300000个字符,并得到一个错误的字符范围


有人有什么想法吗?

与其使用正则表达式,不如尝试使用Python的stdlib字符串函数:

starttext = "<!DOCTYPE html>"
endtext = "count green"

start = data.index(starttext) + len(starttext)
end = data.index(endtext)

output = data[:start] + data[end:]
starttext=“”
endtext=“绿色计数”
开始=数据索引(starttext)+len(starttext)
end=数据索引(endtext)
输出=数据[:开始]+数据[结束:]
小心:人们试图用正则表达式解析HTML。