时间已经到了刷了我的pyparsing技能。
给定含重复结构一个文件
space_missions
Main Objects:
/Projects/antares_III
/Projects/apollo
ground_missions
Main Objects:
/Projects/Barbarossa
/Projects/Desert_Eagle
我切碎,同比下降2.7脚本
def last_occurance_of( expr):
return expr + ~pp.FollowedBy( expr)
ppKeyName = pp.Word( pp.alphanums)
ppObjectLabel = pp.Literal("Main Objects") + pp.FollowedBy(':')
ppObjectRegex = pp.Regex(r'\/Projects\/\w+')
ppTag = pp.Group( ppKeyName.setResultName('keyy') + pp.Suppress( ppObjectLabel) + pp.ZeroOrMore( ppObjectRegex, stopOn=last_occurance_of( ppObjectRegex)).setResultName('objects') )
ppTags = pp.OneOrMore( ppTag)
with open( fn) as fp:
slurp = fp.read()
results = ppTags.parseString( slurp)
我想获得的成绩来回报
[['space_missions',['/Projects/antares_III','/Projects/apollo']
,['ground_missions',['/Projects/Barbarossa','/Projects/Desert_Eagle']]
那我在这里失踪?我知道我在那组成名单都赋予last_occurance_of()的东西,锁定到同一开头的字符串幸运的,但到底是什么人在更普遍的情况,那里的字符串有什么可区分它们标签串
尽管如此,搜索史蒂夫
三件事情在你的解析器来解决: