क्या आप टोकन को संसाधित करने के लिए पार्स क्रियाओं का उपयोग कर रहे हैं क्योंकि उन्हें पार्स किया गया है? यदि हां, तो आप डेल का उपयोग कर पार्स टोकन की सामग्री को नष्ट कर सकते हैं:
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-tuples, और प्रत्येक उत्तरोत्तर मैच की समाप्ति स्थान देता है। आप प्रत्येक पार्स किए गए सेट टोकन को संसाधित कर सकते हैं, फिर जब आप अगले सेट पर जाते हैं, तो पुराना सेट स्वचालित रूप से त्याग दिया जाता है। मुझे लगता है कि आपके कार्यक्रम में न्यूनतम परिवर्तन के साथ, यह आपके लिए सबसे आसान तरीका हो सकता है।
हाँ, यही वह है जो मैं कर रहा हूं। इसे करने के लिए 'del' का उपयोग करना मुझे वास्तव में मेरे साथ होना चाहिए था लेकिन आप सही हैं, स्कैनस्ट्रिंग बहुत साफ है। पाइपर्सिंग को जानना बहुत अच्छा है। धन्यवाद! – nedned
पॉल, 'parseAction' चलाए जाने के बाद भी वाक्यांश को' .suppress() 'स्मृति में रखता है? – Hooked
नहीं - अगर एक अभिव्यक्ति दबा दी जाती है, तो इसकी सामग्री पाइपर्सिंग द्वारा सहेजी नहीं जाती है। – PaulMcG