Determining a replacement dictionary from scratch

Robert Brewer fumanchu at amor.org
Mon Jan 19 03:46:13 CET 2004


Dan wrote:
> I'd like to be able to take a formatted string and determine the
> replacement dictionary necessary to do string interpolation with it. 
> For example:
> 
> >>> str = 'his name was %(name)s and i saw him %(years)s ago.'
> >>> createdict( str )
> {'name':'', 'years':''}
> >>>
> 
> Notice how it would automatically fill in default values based on
> type.  I figure since python does this automatically maybe there is a
> clever way to solve the problem.  Otherwise I will just have to parse
> the string myself.  Any clever solutions to this?

If the only functionality you want is the ability to fill in default
values, you could try a variation on subclassing dict:

PythonWin 2.3.2 (#49, Oct  2 2003, 20:02:00) [MSC v.1200 32 bit (Intel)]
on win32.
>>> class DefaultDict(dict):
... 	def __init__(self, default):
... 		self.default = default
... 	def __getitem__(self, key):
... 		try:
... 			return dict.__getitem__(self, key)
... 		except KeyError:
... 			return self.default
... 		
>>> str = 'his name was %(name)s and i saw him %(years)s ago.'
>>> d = DefaultDict('???')
>>> d['years'] = 3
>>> str % d
'his name was ??? and i saw him 3 ago.'


Robert Brewer
MIS
Amor Ministries
fumanchu at amor.org




More information about the Python-list mailing list