<reponame>tdiprima/code<gh_stars>1000+
import re

exp_rx = re.compile('%\((\w+)\)')

def format_obj(obj, text):
    """
    >>> o = Duck(one='one', two='two', three=5)
    >>> format_obj(o, '%(one)s %(two)s %(three)d')
    'one two 5'
    """
    return text % dict((a, getattr(obj, a))
                               for a in re.findall(exp_rx, text))

# ---- Support for the doctest from here down:

class Duck(object):
    """Quack!"""

    def __init__(self, **kw):
        self.__dict__.update(kw)

if __name__ == '__main__':
    import doctest
    doctest.testmod()

import re

exp_rx = re.compile('%\((\w+)\)')

def format_obj(obj, text):
    """
    >>> o = Duck(one='one', two='two', three=5)
    >>> format_obj(o, '%(one)s %(two)s %(three)d')
    'one two 5'
    """
    return text % dict((a, getattr(obj, a))
                               for a in re.findall(exp_rx, text))

# ---- Support for the doctest from here down:

class Duck(object):
    """Quack!"""

    def __init__(self, **kw):
        self.__dict__.update(kw)

if __name__ == '__main__':
    import doctest
    doctest.testmod()
>>> o = Duck(one='one', two='two', three=5)     >>> format_obj(o, '%(one)s %(two)s %(three)d')     'one two 5' # ---- Support for the doctest from here down: Quack!