我有一个需要解析的文件。解析是以递增方式构建的,因此在每次迭代时,表达式都会更具区域性。
重载系统的代码段看起来大致如下:
for item in ret:
pat = r'a\sstyle=".+class="VEAPI_Pushpin"\sid="msftve(.+?)".+>%s<'%item[1]
r=re.compile(pat, re.DOTALL)
match = r.findall(f)
该文件是一个相当大的HTML文件(从bing地图解析),每个答案必须与其确切的ID匹配。
在应用此更改之前,工作流程非常好。我能做些什么来避免这种情况吗?或者优化代码?
答案 0 :(得分:0)
我唯一的猜测是你得到太多的比赛和内存不足。虽然这看起来不太合理,但可能就是这种情况。尝试使用finditer而不是findall一次获得一个匹配,而不创建匹配的怪物列表。如果这不能解决您的问题,您可能偶然发现了re模块中的一个更严重的错误。