I have two String.printable mysteries in the one question.
First, in Python 2.6:
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
Look at the end of the string, and you'll find '\x0b\x0c' sticking out like a sore-thumb. Why are they there? I am using a machine set to Australian settings, so there shouldn't be any accented characters or the like.
Next, try running this code:
for x in string.printable: print x,
print
for x in string.printable: print x
The first line successfully prints all the characters separated by a space. The two odd characters turn out as the Male and Female symbols.
The second line successfully prints all the characters EXCEPT THE LAST separated by a line feed. The Male symbol prints; the female symbol is replaced with a missing character (a box).
I'm sure Python wasn't intended to be gender-biased, so what gives with the difference?