re.compile(模式,文件)调用会导致系统崩溃

时间:2011-05-18 21:18:32

标签: python regex parsing

我有一个需要解析的文件。解析是以递增方式构建的,因此在每次迭代时,表达式都会更具区域性。

重载系统的代码段看起来大致如下:

    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匹配。

在应用此更改之前,工作流程非常好。我能做些什么来避免这种情况吗?或者优化代码?

1 个答案:

答案 0 :(得分:0)

我唯一的猜测是你得到太多的比赛和内存不足。虽然这看起来不太合理,但可能就是这种情况。尝试使用finditer而不是findall一次获得一个匹配,而不创建匹配的怪物列表。如果这不能解决您的问题,您可能偶然发现了re模块中的一个更严重的错误。