On Sun, 12 Jan 2014 10:08:31 -0500, Eric S. Johansson wrote: > As part of speech recognition accessibility tools that I'm building, I'm > using string.Template. In order to construct on-the-fly grammar, I need > to know all of the identifiers before the template is filled in. what is > the best way to do this?
py> import string py> t = string.Template("$sub some $text $here") py> t.template '$sub some $text $here' Now just walk the template for $ signs. Watch out for $$ which escapes the dollar sign. Here's a baby parser: def get_next(text, start=0): while True: i = text.find("$", start) if i == -1: return if text[i:i+2] == '$$': start += i continue j = text.find(' ', i) if j == -1: j = len(text) assert i < j return (text[i:j], j) start = 0 while start < len(t.template): word, start = get_next(t.template, start) print(word) > can string.Template handle recursive expansion i.e. an identifier > contains a template. If you mean, recursive expand the template until there's nothing left to substitute, then no, not directly. You would have to manually expand the template yourself. -- Steven -- https://mail.python.org/mailman/listinfo/python-list