Domanda

Ho due misteri String.printable in una domanda.

Innanzitutto, in Python 2.6:

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

Guarda la fine della stringa e troverai '\ x0b \ x0c' sporgente come un mal di pollice. Perché sono lì? Sto usando una macchina impostata sulle impostazioni australiane, quindi non dovrebbero esserci caratteri accentati o simili.

Quindi, prova a eseguire questo codice:

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

La prima riga stampa correttamente tutti i caratteri separati da uno spazio. I due personaggi dispari si presentano come simboli Maschile e Femminile.

La seconda riga stampa correttamente tutti i caratteri TRANNE L'ULTIMA separati da un avanzamento riga. Il simbolo maschile viene stampato; il simbolo femminile è sostituito da un carattere mancante (una casella).

Sono sicuro che Python non era destinato a essere influenzato dal genere, quindi cosa offre la differenza?

È stato utile?

Soluzione

C'è una differenza in " stampabile " per " può essere visualizzato sullo schermo " ;. Il terminale visualizza i codici di controllo della stampante ASCII bassi 0x0B e 0x0C come simboli maschio e femmina perché è quello che contengono quegli indici nel font. Quei personaggi sono descritti più accuratamente come i caratteri Tabulatore verticale e Avanzamento modulo. Questi due caratteri, insieme a \ t \ r e \ n, sono tutti stampabili e fanno cose ben definite su una stampante.

Altri suggerimenti

Dall'interno di cmd.exe:

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

Inside Emacs:

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

Ecco un estratto dai (5) 'man page:

| 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.        |
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top