[Python-Dev] Re: Alternative placeholder delimiters for PEP 292 (original) (raw)

Scott David Daniels Scott.Daniels at Acm.Org
Thu Sep 2 22:51:15 CEST 2004


Andrew Durdin wrote:

A Yet Simpler Proposal, modifying that of PEP 292 ... ... placeholders are delimited by braces {}. Do you know about the techinique I use? It works w/o a new library:

Surround-style delimiting, using a single (specifiable) character.

 def subst(template, _sep='$', **kwds):
     if '' not in kwds:
         kwds[''] = _sep    # Allow doubled _sep for _sep.
     parts = template.split(_sep)
     parts[1::2] = [kwds[element] for element in parts[1::2]]
     return template[0:0].join(parts)

For 2.4, use a generator expression, not a list comprehension:

 def subst(template, _sep='$', **kwds):
     if '' not in kwds:
         kwds[''] = _sep    # Allow doubled _sep for _sep.
     parts = template.split(_sep)
     parts[1::2] = (kwds[element] for element in parts[1::2])
     return template[0:0].join(parts)

Then you can use:

 subst('What I <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mi>e</mi><mi>a</mi><mi>n</mi></mrow><annotation encoding="application/x-tex">mean</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">m</span><span class="mord mathnormal">e</span><span class="mord mathnormal">an</span></span></span></span> is <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow></mrow><annotation encoding="application/x-tex"></annotation></semantics></math></span><span class="katex-html" aria-hidden="true"></span></span>5.00', mean='really mean')

or subst(u'What I meanmeanmean is 5.00', mean=u'really mean') or subst('What I meanmeanmean is 5.00', mean='really mean', *locals()) or ...

-- Scott David Daniels Scott.Daniels at Acm.Org



More information about the Python-Dev mailing list