On Wed, Jun 19, 2002 at 02:45:46AM -0400, Raymond Hettinger wrote: > > Handling Missing Keys > > > > What should happen when one of the substitution keys is missing > > from the mapping (or the locals/globals namespace if no argument > > is given)? There are two possibilities: > > > > - We can simply allow the exception (likely a NameError or > > KeyError) to propagate. > > > > - We can return the original substitution placeholder unchanged. > > And/Or, > - Leave placeholder unchanged unless default argument supplied: > mystr.sub(mydict, undefined='***') # Fill unknowns with > stars > And/Or, > - Raise an exception only if specified: > mystr.sub(mydict, undefined=NameError) > And/Or > - Return a count of the number of missed substitutions: > nummisses = mystr.sub(mydict) > > > BDFL proto-pronouncement: It should always raise a NameError when > > the key is missing. There may not be sufficient use case for soft > > failures in the no-argument version. > > I had written a minature mail-merge program and learned that the NameError > approach is a PITA. It makes sense if the mapping is defined inside the > program; Exceptions are *supposed* to be a PITA in order to make sure they are hard to ignore. +1 on optional argument for default value. -1 on not raising exception for missing name. I think the best approach might be to raise NameError exception *unless* a default argument is passed. The number of misses cannot be returned by this method - it returns the new string. Oren
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4