Por que string.printable do Python contém caracteres não imprimíveis?

votos
12

Eu tenho dois mistérios String.printable no uma pergunta.

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 uma máquina definido 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 caracteres separados por um espaço. Os dois personagens ímpares saem como o Símbolos masculinos e fêmeas.

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

Estou certo de Python não se destinava a ser de gênero tendenciosa, então o que dá com a diferença?

Publicado 06/01/2009 em 22:10
fonte usuário
Em outras línguas...                            


2 respostas

votos
26

Há uma diferença na "impressão" para "pode ​​ser exibido na tela". Seu terminal exibe os códigos de controle da impressora ascii baixos 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 a Tabulator vertical e caracteres de avanço do formulário. Esses dois personagens, juntamente com \ t \ r \ n, são todos de impressão, e não bem definida coisas em uma impressora.

Respondeu 06/01/2009 em 22:15
fonte usuário

votos
6

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) A página de homem:

| Sequence | Character | Ação Terminal |
| ---------- + -------------- + ----------------------- ---------------------- |
| \ F | form-alimentar | Move a posição de impressão para a inicial |
| | | posição de impressão da página lógica seguinte. |
| \ V | vertical-guia | Move a posição de impressão do início |
| | | a próxima posição de guia vertical. Se houver |
| | | há posições mais guia vertical esquerda no |
| | | a página, o comportamento é indefinido. |
Respondeu 06/01/2009 em 23:27
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more