如何在PyParsing中定义数字?

时间:2017-03-14 06:11:58

标签: 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()

不会返回错误?

1 个答案:

答案 0 :(得分:2)

致电parseAll=True时,请为其指定参数integer.parseString('123a', parseAll=True).pprint() 。因此

lapply(mylist,"[[", function(x) as.character(x['mycolumn']))

抛出异常。

来自pyparsing documentation如果您希望语法要求成功解析整个输入字符串,请将parseAll设置为True。