Pergunta

Eu tenho dois mistérios String.printable na pergunta um.

Em primeiro lugar, no Python 2.6:

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

Olhe para o fim da cadeia, e você vai encontrar '\ x0b \ x0c' furar para fora como uma ferida polegar. Por que eles estão lá? Eu estou usando um conjunto máquina para configurações australianos, por isso não deve haver quaisquer caracteres acentuados ou similares.

Em seguida, tente executar este código:

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

A primeira linha imprime com sucesso todos os personagens separados por um espaço. Os dois personagens ímpares saem como os símbolos masculino e feminino.

A segunda linha imprime com sucesso todos os caracteres com excepção da última, separadas por uma linha de alimentação. As estampas símbolo masculino; o símbolo feminino é substituído por um caractere faltando (a caixa).

Estou certo de Python não estava destinado a ser viés de gênero, então o que dá com a diferença?

Foi útil?

Solução

Há uma diferença na "impressão" para "pode ??ser exibido na tela". Seu terminal exibe as baixo ascii códigos de controle da impressora 0x0b e 0x0c como os símbolos masculinos e femininos porque é isso que esses índices em sua fonte conter. Esses caracteres são descritos de forma mais precisa como os caracteres de alimentação vertical Tabulator e forma. Esses dois personagens, juntamente com \ t \ r \ n, são todos de impressão e fazer as coisas bem definidas em uma impressora.

Outras dicas

De dentro cmd.exe:

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

Dentro Emacs:

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

Aqui está um trecho de formatos (5) página homem ':

| 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top