Fredrik Tolf wrote: > I've been trying to get the string formatting operator (%) to work with > more arguments than the format string requires, but I can find no way to > do that. For example: > > >>> "%i" % 10 > '10' > >>> "i" % 10 > Traceback (most recent call last): > File "<stdin>", line 1, in ? > TypeError: not all arguments converted during string formatting > > The thing is, I want to get format strings from the user, and I don't > want to require the user to consume all the arguments. docs.python.org > doesn't seem to have any clues on how to achieve this, and I can't think > of what to google for. > > Could it be as I fear, that it is impossible? >
Three approaches spring to mind. In descending order of my preference: (a) don't do that (b) parse the format string, counting the number of args required. If the user has supplied more, throw them away. (c) wrap your execution of format_string % args in a try/except bracket. If you get a TypeError with that message [not guaranteed to remain constant in the future], throw away the last arg and go around again. As a matter of curiosity, why don't you want the user to consume all the arguments? Don't they get even a teensy-weensy warning message? Are you writing a Perl interpreter in Python? Cheers, John -- http://mail.python.org/mailman/listinfo/python-list