Python 2.4 includes a string.Template class which does much the same thing as 
Itpl.itpl():

 >>> from string import Template
 >>> s, n, r = '0', 12, 3.4
 >>> x = Template("$s $n $r")
 >>> x.substitute(locals())
'0 12 3.4'

If you want to bundle this up in a pp() function you have to do some magic to get the locals() of the caller. This seems to work:

 >>> import sys
 >>> def pp(s):
 ...   loc = sys._getframe(1).f_locals
 ...   print Template(s).substitute(loc)
 ...
 >>> pp("$s $n $r")
0 12 3.4

Kent

Bill Mill wrote:
Jeff,

I get the impression that many pythonistas don't like string
interpolation. I've never seen a clear definition of why. Anyway, it's
easy enough to add with the Itpl [1] module:


import Itpl, sys
sys.stdout = Itpl.filter()
s, n, r = 0, 0, 0
print "$s $n $r"

0 0 0

x = Itpl.itpl("$s $n $r")
x

'0 0 0'

And, of course, you can give Itpl.itpl a nicer name; I usually call it
pp(). If you don't need to change the behavior of the "print"
statement, then you don't need the Itpl.filter() line.

[1]  http://lfw.org/python/Itpl.py

Peace
Bill Mill
bill.mill at gmail.com


On Thu, 10 Feb 2005 10:22:51 -0500, Smith, Jeff <[EMAIL PROTECTED]> wrote:

To all those who talked about hating the symbology in Perl and the
suggestion that it should be removed from a later version.  I just
remembered what you get for that symbology that I really do like about
Perl: variable interpolation in strings:

C:
sprintf(newstr,"%s %d %f",s,n,r);

Becomes a little nicer in Python with:
newstr = '%s %d %f' % (s,n,r)

Although it's worse with:
newstr = s + ' ' + str(n) + ' ' + str(r)

But in my mind nothing beats the Perl statement:
newstr = "$s $n $r";

for clarity, ease of use, and maintainability.

Jeff

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor


_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor

Reply via email to