当前位置:  开发笔记 > 编程语言 > 正文

为什么Python的string.printable包含不可打印的字符?

如何解决《为什么Python的string.printable包含不可打印的字符?》经验,为你挑选了2个好方法。

我在一个问题中有两个String.printable的谜团.

首先,在Python 2.6中:

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

看看字符串的结尾,你会发现'\ x0b\x0c'像拇指一样伸出来.他们为什么在那里?我使用的机器设置为澳大利亚设置,因此不应该有任何重音字符等.

接下来,尝试运行此代码:

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

第一行成功打印由空格分隔的所有字符.两个奇怪的字符结果为男性和女性符号.

第二行成功打印除了换行符之外的所有字符.男性符号打印; 女性符号被替换为缺少的字符(方框).

我确信Python并不是出于性别偏见,所以有什么区别呢?



1> Sparr..:

"可以在屏幕上显示"的"可打印"有所不同.您的终端显示低ascii打印机控制代码0x0B和0x0C作为男性和女性符号,因为这是您的字体中的那些索引包含的.这些字符更准确地描述为Vertical Tabulator和Form Feed字符.这两个字符以及\ t\r和\n都是可打印的,并且在打印机上做了很好的定义.



2> jfs..:

从cmd.exe内:

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

内部Emacs:

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

以下是格式(5) '手册页的摘录:

| 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.        |

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有