我有一个简单的句子 - “ tok0,084040,tok1,tok2,231108 ”,其中084040是时间 (08:40:40) 而231108是日期 (23.11.2008)
根据 pyparsing 文档,我编写了解析令牌的规则:
from pyparsing import *
d = Literal(',').suppress()
two_digits = Word(nums, exact=2)
tok0 = Word(nums)
time_token = two_digits("hour") + two_digits("min") + two_digits("sec")
tok1 = Word(alphas)
tok2 = oneOf('A B C')
date_token = two_digits("day") + two_digits("month") + two_digits("year")
grammar = (tok0 + d + time_token + d + tok1 + d + tok2 + d + date_token)
我想要的是在我的 ParseResults 中有一个由time_token和date_token组成的逻辑组,以便我可以使用setParseAction,setResultsName作为组。考虑到它们不相邻。
PS:grammar.parseString 的结果应该是 ParseResults 的一个实例。Group(time_token + date_token)
dreamGroup = Group(time_token + date_token)("datetime").setParseAction(myFn)
parseResults = grammar.parseString("123,084040,ABC,A,231108")
datetime = parseResults.datetime