1
我是PyParser的新手,但如果能夠使其工作,我非常樂意使用它。如何使用PyParsing匹配可選的關鍵字後綴?
我有消息字符串我想解析有一個命令動詞,多字對象的名稱,然後一個可選的後綴,一些例子:
verb object
verb another object
verb object friday
verb another object monday
動詞是從固定列表,後綴也是如此(本例中爲一週中的幾天),但對象名稱可以是任何其他詞組合。
這令我之類的話,應該是非常基本的,到目前爲止,我有:
#!/bin/env python
from pyparsing import Word, alphas, Group, OneOrMore, oneOf, Optional
Verb = Word(alphas)
Object = Group(OneOrMore(Word(alphas)))
Suffix = oneOf('Monday Tuesday Wednesday Thursday Friday Saturday Sunday',
caseless=True)
Command = Verb + Object + Optional(Suffix)
for msg in ["verb object",
"verb another object",
"verb object friday",
"verb another object monday"]:
print(Command.parseString(msg))
這不是工作,我想怎麼雖然,我得到下面的輸出,其中後綴爲被列入對象組:
['verb', ['object']]
['verb', ['another', 'object']]
['verb', ['object', 'friday']]
['verb', ['another', 'object', 'monday']]
我使用NotAny和其他一些東西嘗試,但還沒有得到遠,可有人請點我在正確的方向?
這是非常多的,但你也可以這樣做:OneOrMore(Word(alphas),stopOn = Suffix)。 stopOn參數爲您提供負向預測。但他們實際上是一樣的。 – PaulMcG
謝謝@PaulMcGuire,我欣賞指導:) – Tom