Question

J'ai deux mystères String.printable dans la même question.

Premièrement, dans Python 2.6:

>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'

Regardez la fin de la chaîne et vous verrez "\ x0b \ x0c" comme un pouce endolori. Pourquoi sont-ils là? J'utilise une machine configurée selon les paramètres australiens. Il ne devrait donc y avoir aucun caractère accentué ou similaire.

Ensuite, essayez d’exécuter ce code:

for x in string.printable: print x,
print
for x in string.printable: print x

La première ligne imprime avec succès tous les caractères séparés par un espace. Les deux personnages étranges deviennent les symboles masculin et féminin.

La deuxième ligne imprime avec succès tous les caractères SAUF LE DERNIER, séparés par un saut de ligne. Le symbole masculin est imprimé; le symbole féminin est remplacé par un caractère manquant (une case).

Je suis sûr que Python n'était pas destiné à être sexiste, alors qu'est-ce qui donne la différence?

Était-ce utile?

La solution

Il y a une différence dans " imprimable " pour "peuvent être affichés sur votre écran". Votre terminal affiche les codes de contrôle d’imprimante ascii faibles 0x0B et 0x0C en tant que symboles masculin et féminin, car c’est ce que ces index de votre police contiennent. Ces caractères sont plus précisément décrits en tant que caractères de tabulation verticale et de saut de formulaire. Ces deux caractères, ainsi que \ t \ r et \ n, sont tous imprimables et font des choses bien définies sur une imprimante.

Autres conseils

À partir de cmd.exe:

>>> print '\x0b'
♂
>>> print '\x0c'
♀
>>> print '\f' # form feed
♀
>>> print '\v' # vertical tab
♂
>>>

À l'intérieur d'Emacs:

>>> print '\f\v'
^L^K

Voici un extrait de formats (5) page de manuel :

| Sequence | Character    | Terminal Action                             |
|----------+--------------+---------------------------------------------|
| \f       | form-feed    | Moves the printing position to the initial  |
|          |              | printing position of the next logical page. |
| \v       | vertical-tab | Moves the printing position to the start of |
|          |              | the next vertical tab position. If there    |
|          |              | are no more vertical tab positions left on  |
|          |              | the page, the behavior is undefined.        |
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top