2017-03-14 11 views
2

私は、PyParsingにおける整数のルールを定義するような何か必要があります。問題は、例えばのために、trailings(非数字)であるPyParsingで数値を定義する方法は?

import pyparsing 
plusorminus = pyparsing.Literal('+') | pyparsing.Literal('-') 
number = pyparsing.Word(pyparsing.nums) 
hexdecimal = pyparsing.Word(pyparsing.hexnums) 
decimal = pyparsing.Combine(pyparsing.Optional(plusorminus) + number) 
integer = pyparsing.Combine(pyparsing.Optional(plusorminus) + ((pyparsing.CaselessLiteral('0x') + hexdecimal) |number)).addParseAction(lambda toks: int(toks[0], 0)) 

を数字と文字:

integer.parseString('123a').pprint() 

エラーを返されませんか?

+0

pyparsingの最新バージョンは、 'pyparsing.pyparsing_common'(https://pythonhosted.org/pyparsing/pyparsing.pyparsing_common-class.html)にいくつかの事前定義された整数と実際の式の定義を含みます。 – PaulMcG

答えて

2

parsestringを呼び出す場合は、パラメータparseAll=Trueを付けます。したがって

integer.parseString('123a', parseAll=True).pprint() 

は例外をスローします。

pyparsing documentationより:文法で入力文字列全体が正常に解析されるようにするには、parseAllをTrueに設定します。

関連する問題