String changing on the fly

John Hunter jdhunter at ace.bsd.uchicago.edu
Wed Oct 20 19:40:56 CEST 2004


>>>>> "John" == John Hunter <jdhunter at nitace.bsd.uchicago.edu> writes:


Continuing the fun, you can define a new python class that inherits
from string, but overrides the "convert me to a string representation"
method __str__ to evaluate itself in the context of the global
variables

import re


class PerlString(str):
    def __str__(self):

        rgx = re.compile('\$(\w+)')
        fmt = re.sub('\$(\w+)', self.dollar_replace, self)
        return fmt%globals()

    def dollar_replace(self, matchobj):
        return '%(' + matchobj.group(1) + ')s'

s = PerlString('$first paid cost $T dollars')


T = 2
first = 'John'
print s

T = 5
first = 'Bill'
print s






More information about the Python-list mailing list