我需要在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 :(得分:2)
致电parseAll=True
时,请为其指定参数integer.parseString('123a', parseAll=True).pprint()
。因此
lapply(mylist,"[[", function(x) as.character(x['mycolumn']))
抛出异常。
来自pyparsing documentation:如果您希望语法要求成功解析整个输入字符串,请将parseAll设置为True。