python – 如何在解析过程中丢弃pyparsing parseResults?

是否有可能告诉pyparsing不存储ParseResults或手动丢弃它们?

我正在解析一个大的项目文件,并且可以通过解析操作对每个项目进行所有后处理.因此,只要一个项目被解析,我就不再需要它的ParseResult了,并希望能够丢弃它,因为我正在达到我所在机器的内存限制.

最佳答案
您是否在解析令牌时使用解析操作来处理令牌?如果是这样,您可以使用del删除已解析的标记内容

def parseActionThatDeletesTheParsedTokens(tokens):
    # ...
    # do something interesting with the tokens
    # ...

    # delete the contents of the parsed tokens
    del tokens[:]

或者您可能只想使用scanString而不是parseString.而不是这个:

OneOrMore(blockOfText).parseString(bigHonkingString)

做:

for tokens,matchstart,matchend in blockOfText.scanString(bigHonkingString):
    # do stuff with the tokens

scanString返回一个生成器,它生成包含匹配标记的3元组,每个连续匹配的起始位置和结束位置.您可以处理每个已解析的令牌集,然后当您转到下一个集时,旧集将自动被丢弃.我认为这可能是您最简单的方式,只需对您的程序进行最少的更改.

相关文章

在前一篇博客中我们介绍了加侧旋的乒乓球弧圈技术的模拟,本...
在近期conda的版本更新中,有可能会删除路径下的_sysconfigd...
本文主要展示了一些lambda表达式的使用示例,通过这些示例,...
本文通过对比Jax和Numpy计算Normalized Hamming Distance的过...
我们知道GPU加速在可并行化程度比较高的算法中,能够发挥出比...
Numpy这个库在Python编程中非常的常用,不仅在性能上补足了P...