[Python-Dev] string formatting (extended print statement, uPre-PEP)

M.-A. Lemburg mal@lemburg.com
Mon, 24 Jul 2000 12:53:27 +0200

Ka-Ping Yee wrote:
> On Sun, 23 Jul 2000, Paul Prescod wrote:
> > As happy as I am to have it called Prescod-ese, I admit to influence
> > from some languages that (otherwise) suck. :)
> I agree that formatting and interpolation is one area where Perl is
> much stronger, and it should be easy to do such things in Python.
> > credit-where-due 'ly yrs
> I kind of hate to do this, but i can't restrain myself from pointing
> out that i *did* propose just this solution quite recently, in:
>     http://www.python.org/pipermail/python-dev/2000-July/012764.html
> I wrote a module to do this a few years ago (1996, i think).  It
> supported attribute lookup, item lookup, and expressions.  (No one
> has yet mentioned the issue of escaping the dollar sign, which i
> handled by doubling it.)
> See the exact rules described, with examples, at
>     http://www.lfw.org/python/Itpl.html
> If you want to play, just download
>     http://www.lfw.org/python/Itpl15.py
> and try the itpl() function in the module.
> I would be quite pleased if (for example) $"" performed the
> equivalent of a function call to itpl() on the enclosed string.

Any reason this can't be emulated using the existing
"..." % mapping syntax ?

You'd just have to provide a smart mapping which evaluates
the %(something)s tags in the format string to a string
ready for insertion... something may even contain balanced
parenthesis, so even function calls are within range.

Note that

a = 1
b = 2
print "We have %(a)s apples and %(b)s oranges" % locals()

is already possible today without any additional magic.

Marc-Andre Lemburg
Business:                                      http://www.lemburg.com/
Python Pages:                           http://www.lemburg.com/python/