【发布时间】:2018-10-13 11:55:49
【问题描述】:
我编写了一个函数来提取两个分隔符之间的字符串。但是在某些文件中,这些分隔符出现了好几次,所以我想把它们全部提取出来。 在我的实际功能中,它只提取它遇到的第一个然后退出。
我该如何解决?
def extraction_error_CF(file):
f=open(file,'r')
file=f.read()
f.close()
start = file.find('Error validating') #1st delimiter
end = file.find('</SPAN><BR>', start) # 2nd delimiter
if start!=-1 and end!=-1: #If these two delimiters are present...
return(file[start:end])
else:
return""
【问题讨论】:
-
为此使用适当的 html/xml 解析器
-
你可以给
find传递一个额外的参数,这是最后找到的模式的偏移量,只需加1你就会找到所有的 -
抱歉,我刚开始编写代码,我不理解您使用 html/xml 解析器的解决方案,第二个解决方案我将“1”添加到:file.find('Error validating' ,1) 但它仍然只找到第一个。谢谢
-
@Jean-FrançoisFabre 我们不能盲目地假设文件的内容实际上是一个完整的 HTML 文档——因为我们知道它也可以是一个日志文件,在某些消息中带有标记或其他任何包含标记的内容一个真正的 HTML 文档。
-
@Tom92 如果没有您文件内容的代表性样本,我们将无法正确回答您的问题。