[Pyparsing] Combining strings
Brought to you by:
ptmcg
From: <pyp...@mg...> - 2006-03-24 09:52:08
|
Hi, I'm trying to get a string back in one piece and the Combine class doesn't seem to be working. I'm not sure how to fix it. Can anyone help? Here's the output: echo /home/%(user)/apps/%(prog)/bin/%prog ['echo', '/home/', 'mgmiller', '/apps/', 'foo', '/bin/', 'foo'] I'd like to get the path back as one string ... how can I do that? Thanks if you can help, -Mike ---------------------- #!/bin/env python from pyparsing import * import string, os namespace = { 'a': 5, 'user':'mgmiller', 'prog':'foo' } cmdstring = r''' echo /home/%(user)/path/%(prog)/bin/%prog ''' def getpyvar(s, loc, match): 'return a python type variable from our own namespace' if namespace.has_key(match[0]): return namespace[match[0]] # define grammar keyword = oneOf('alias dir echo ver') args = Word(alphanums + '_-=/"\'') variable = alphas + '_' # expansions pyvar = Combine( Optional(printables) + Literal('%').suppress() + Optional('(').suppress() + Word(variable) + Optional(')').suppress() + Optional(printables) ) pyvar.setParseAction(getpyvar) statement = ( keyword + ZeroOrMore(pyvar | args) ) print cmdstring print statement.parseString(cmdstring) ---------------------- -Mike ------------------------------------------------------------- Mike Miller Earth, Sol, Orion Arm, Milky Way |