47
votes

I use this python shell to generate a string:

>>>':'.join("{:x}\n".format(random.randint(0, 2**16 - 1)) for i in range(4))

When I run this shell in Python2.7.5, everything goes okay. But it occurs ValueError: zero length field name in format when Python version is 2.6.6. What should I run this shell fine when Python version is 2.6.6?

1

1 Answers

79
votes

In Python versions 2.6 or earlier, you need to explicitly number the format fields:

':'.join("{0:x}\n".format(random.randint(0, 2**16 - 1)) for i in range(4))
#          ^

You can read about this in the docs:

Changed in version 2.7: The positional argument specifiers can be omitted, so '{} {}' is equivalent to '{0} {1}'.