String formatting strangeness

dark.ryder at gmail.com dark.ryder at gmail.com
Fri May 13 09:15:47 EDT 2005


I must be doing something wrong, but for the life of me, I can't figure
out what.  Here's the code snippet which is giving me grief:

print type(number), type(name), type(seconds // 60), type(seconds % 60)
print "\t\t\t<section number=\"%i\" title=\"%s\" length=\"%i:%i\"/>\n"
% [number, name, seconds // 60, seconds % 60]

(These are lines 49 and 50 of the script; I can post the whole thing if
someone wants, but I think this is enough to see why it's driving me
nuts.)

And the output:

<type 'int'> <type 'str'> <type 'int'> <type 'int'>
Traceback (most recent call last):
  File "X:\Music (FLAC)\Post-process new rips.py", line 50, in ?
    print "\t\t\t<section number=\"%i\" title=\"%s\"
length=\"%i:%i\"/>\n" % [number, name, seconds // 60, seconds % 60]
TypeError: int argument required

Wait, what?  The first line clearly identifies that the the first,
third, and fourth elements are all integers, yet the error says that
*lack* of integers is the problem.  If I change all "%i"s to "%d", I
get the same problem, and changing to "%s" (hey, it was worth a shot)
gives "TypeError: not enough arguments for format string" instead.
Huh?  I see four placeholders and a four-element tuple.

Can anyone enlighten me here?




More information about the Python-list mailing list