簡単な文があります - " tok0,084040,tok1,tok2,231108 " ここで、084040は時刻 (08:40:40) で、231108は日付 (23.11.2008) です。
pyparsing documentation に従って、トークンを解析するためのルールを作成しました。
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)
私が望むのは、グループにsetParseAction、setResultsNameを使用できるように、 ParseResultsにtime_tokenとdate_tokenで構成される論理グループを作成することです。それらが隣接していないと考える
ようなもの。
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