如何在 PyParsing 中定义数字?
How to define numbers in PyParsing?
我需要在 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()
return 不是错误吗?
调用parsestring
时,给它参数parseAll=True
。因此
integer.parseString('123a', parseAll=True).pprint()
抛出异常。
来自pyparsing documentation:如果您希望语法要求成功解析整个输入字符串,则将 parseAll 设置为 True。
我需要在 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()
return 不是错误吗?
调用parsestring
时,给它参数parseAll=True
。因此
integer.parseString('123a', parseAll=True).pprint()
抛出异常。
来自pyparsing documentation:如果您希望语法要求成功解析整个输入字符串,则将 parseAll 设置为 True。