template strings for matching?

Robin Becker robin at reportlab.com
Thu Oct 9 15:29:52 CEST 2008

Joe Strout wrote:
> Catching up on what's new in Python since I last used it a decade ago, 
> I've just been reading up on template strings.  These are pretty cool!  
> However, just as a template string has some advantages over % 
> substitution for building a string, it seems like it would have 
> advantages over manually constructing a regex for string matching.
> So... is there any way to use a template string for matching?  I 
> expected something like:

you could use something like this to record the lookups

 >>> class XDict(dict):
... 	def __new__(cls,*args,**kwds):
... 		self = dict.__new__(cls,*args,**kwds)
... 		self.__record = set()
... 		return self
... 	def _record_clear(self):
... 		self.__record.clear()
... 	def __getitem__(self,k):
... 		v = dict.__getitem__(self,k)
... 		self.__record.add(k)
... 		return v
... 	def _record(self):
... 		return self.__record
 >>> x=XDict()
 >>> x._record()
 >>> x=XDict(a=1,b=2,c=3)
 >>> x
{'a': 1, 'c': 3, 'b': 2}
 >>> '%(a)s %(c)s' % x
'1 3'
 >>> x._record()
set(['a', 'c'])

a slight modification would allow your template match function to work even when 
some keys were missing in the dict. That would allow you to see which lookups 
failed as well.
Robin Becker

More information about the Python-list mailing list