解析アクションを使用して、定義された解析ルールに一致したデータにさらに検証を追加できますが、一部のセマンティック ルールに失敗する可能性があります。以下は、任意の整数に一致する式で解析アクションが使用されているが、解析アクションでは偶数の整数しか許可されていない場合です。
from pyparsing import *
integer = Word(nums).setParseAction(lambda t:int(t[0]))
even_integer = integer.copy()
def onlyEvensAllowed(tokens):
if tokens[0] % 2 != 0:
# reject this integer by raising a ParseException
raise ParseException('only even numbers allowed')
even_integer.addParseAction(onlyEvensAllowed)
sample = "92873 234 2934 2934 292394 239847 293879237 2398 293492"
number = even_integer | integer.suppress()
print OneOrMore(number).parseString(sample)
版画:
[234, 2934, 2934, 292394, 2398, 293492]
大学の試合のスコアの場合、同様のフィルタリング解析アクションを実行して、"Florida" という文字列を含む大学名のみを受け入れ、そうでない場合は ParseException を発生させることができます。