string.printable中的控制字符有什么用?

Ric*_*ley 7 python string control-characters

我正在学习迷你语言格式,并向上滚动查看了一些字符串内容,并且想知道Python认为可打印的是什么,所以我检查了一下:

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

请注意,最后还有^ I,^ J和^ M等其他常规可打印控制类型字符,还有^ B和^ C。

这些有什么用?

che*_*ner 6

\x0b是U + 000B,LINE TABULATION,\x0c是U + 000C,FORM FEED(FF)。

大。这是什么意思,为什么它们被认为是可打印的?

在电传打字时代,ASCII提供了这些字符,用于通过打印机推进一张纸。行制表符用于换行,就像水平制表符用于空格一样。打印机可能具有一组定义的垂直制表位,并且行制表符将被解释为请求前进到当前行之后的下一个制表符。

换页将前进到下一页的顶部,但是设备定义了一页。(如果使用连续进纸,则将考虑“页面”,例如66行,如果您当前位于第60行,则换页将仅将7行前进到下一页的第1行。)

在现代终端仿真器上,它们往往没有任何特殊含义。简单的测试表明,在上xterm,它们看起来都与换行符后跟空格一样:

>>> print("x\x0cy")
x
 y
>>> print("x\x0by")
x
 y
>>>
Run Code Online (Sandbox Code Playgroud)

更新:看到/sf/answers/4089479271/之后,它不仅显示了换行符之后的空格,而且还出现了换行符后没有回车符,即光标前进一行而不返回到该行的开头;与进行比较print("\n"),无论光标当前位于何处,它都会前进到下一行的开头。(这更有意义,我应该记得这一点。)


MyN*_*leb 4

这些是空白字符的类型:

>>> string.whitespace
' \t\n\r\x0b\x0c'
Run Code Online (Sandbox Code Playgroud)

来自文档

包含所有被视为空白的 ASCII 字符的字符串。这包括字符空格、制表符、换行符、回车符、换页符和垂直制表符。

我们通过遵循可打印文档来了解这一点:

被视为可打印的 ASCII 字符字符串。这是数字、ascii_letters、标点符号和空格的组合。

我们通过引用unicode 控制字符知道这些空白字符是什么:
\x0b垂直制表符
\x0c还是换页符