У меня есть две загадки String.printable в одном вопросе.
Сначала в Python 2.6:
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
Посмотрите на конец строки, и вы увидите, что \ x0b \ x0c торчит, как больной палец. Почему они там? Я использую машину с австралийскими настройками, поэтому здесь не должно быть символов с акцентом или тому подобного.
Далее попробуйте запустить этот код:
for x in string.printable: print x,
print
for x in string.printable: print x
Первая строка успешно печатает все символы, разделенные пробелом. Два нечетных символа оказываются мужскими и женскими символами.
Во второй строке успешно печатаются все символы, кроме последних, разделенных переводом строки. Мужской символ печатает; женский символ заменяется пропущенным символом (прямоугольником).
Я уверен, что Python не был предназначен для гендерных предрассудков, так что же даст разницу?