Guido, can you please, for our enlightenment, tell us what are the reasons you feel %(foo)s was a mistake?
Because of the trailing 's'. It's very easy to leave it out by mistake, and because the definition of printf formats skips over spaces (don't ask me why), the first character of the following word is used as the type indicator.
(FWIW, I agree with your other observations -- this was why I support exploring an alternative in PEP 292.)
--Guido van Rossum (home page: http://www.python.org/%7Eguido/)