string formatting with mapping & '*'... is this a bug?

OKB (not okblacke) BrenBarn at aol.com
Thu Sep 9 20:45:37 CEST 2004


Pierre Fortin wrote:

> Attempting to specify a field width via '*' to a mapping fails....
> 
>>>> "%(two)*d" % (mapping,6)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: format requires a mapping
>>>> "%(two)-*d" % (6,mapping)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> TypeError: format requires a mapping

    	I don't think this has anything to do with the * thing.  You can't 
mix the sequence and mapping forms of %.  For instance, this also fails

>>> m = {'one': 1, 'two': 2}
>>> "%(two)d %d" % (m, 6)

Traceback (most recent call last):
  File "<pyshell#8>", line 1, in -toplevel-
    "%(two)d %d" % (m, 6)
TypeError: format requires a mapping

    	The error message is telling you the truth: you're passing the % 
operator a tuple, but your format string has a "%(two)" in it, which 
means it requires not a tuple but a mapping.

-- 
--OKB (not okblacke)
Brendan Barnwell
"Do not follow where the path may lead.  Go, instead, where there is
no path, and leave a trail."
	--author unknown



More information about the Python-list mailing list