我有一個簡單的句子 - 「tok0,084040,tok1,tok2,231108」 裏是時候(八點四十分40秒)和是日期(2008年11月23日)如何使用pyparsing將令牌放置在不同的位置?
繼在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,這樣我可以使用
setParseActio,
setResultsName爲組。考慮到他們不相鄰,就像
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
P.S .: grammar.parseString的結果應該是ParseResults的一個實例。
你的意思是'08:40:40'對嗎? –
當然。我馬上解決它。 – Hangul