5

ParseResults を保存しないように、または手動で破棄するように pyparsing に指示することは可能ですか?

私はアイテムの大きなファイルを解析しており、解析アクションを介して各アイテムのすべての後処理を行うことができます。そのため、アイテムが解析されるとすぐに、それが ParseResult である必要がなくなり、使用しているマシンのメモリ制限に達したときに破棄できるようにしたいと考えています。

4

1 に答える 1

4

パース アクションを使用して、トークンが解析されるときにトークンを処理していますか? その場合は、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 タプルを生成するジェネレータを返します。解析されたトークンの各セットを処理できます。次に、次のセットに進むと、古いセットは自動的に破棄されます。これは、プログラムへの変更を最小限に抑えた、最も簡単な方法であると思います。

于 2012-09-13T07:02:26.570 に答える