Pregunta

Tengo dos misterios String.printable en una pregunta.

Primero, en Python 2.6:

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

Mira el final de la cadena, y encontrarás '\ x0b \ x0c' sobresaliendo como un dolor de pulgar. ¿Por qué están ellos ahí? Estoy usando una máquina configurada con la configuración australiana, por lo que no debería haber ningún carácter acentuado o similar.

A continuación, intente ejecutar este código:

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

La primera línea imprime con éxito todos los caracteres separados por un espacio. Los dos personajes impares se convierten en los símbolos masculino y femenino.

La segunda línea imprime con éxito todos los caracteres, EXCEPTO LOS ÚLTIMOS separados por un salto de línea. El símbolo masculino se imprime; el símbolo femenino se sustituye por un carácter que falta (un cuadro).

Estoy seguro de que Python no estaba destinado a tener un sesgo de género, así que, ¿qué da con la diferencia?

¿Fue útil?

Solución

Hay una diferencia en " imprimible " para " se puede mostrar en su pantalla " ;. Su terminal muestra los códigos de control de impresora de baja ascii 0x0B y 0x0C como símbolos masculinos y femeninos porque eso es lo que contienen esos índices en su fuente. Esos caracteres se describen con mayor precisión como tabulador vertical y caracteres de avance de página. Estos dos caracteres, junto con \ t \ r y \ n, son imprimibles y hacen cosas bien definidas en una impresora.

Otros consejos

Desde cmd.exe:

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

Dentro de Emacs:

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

Aquí hay un extracto de formatos (5) página de manual:

| 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.        |
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top