字符串中控制字符有什么用?



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

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

请注意,在最后,除了其他正常的可打印控件类型字符(如 ^I、^J 和 ^M(外,还有 ^B 和 ^C。

这些有什么用?

x0b是U+000B,行制表,x0c是U+000C,表单进给(FF(。

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

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

表单源将前进到下一页的顶部,但设备定义了一个页面。(如果它使用连续的进纸,则考虑"页面",例如 66 行,如果您当前在第 60 行,则表单进纸将简单地前进 7 行,到下一页的第 1 行。

在现代终端模拟器上,它们往往没有任何特定的含义。简单的测试表明,在xterm上,它们似乎都被视为与换行后跟空格相同的处理方式:

>>> print("xx0cy")
x
y
>>> print("xx0by")
x
y
>>>

更新:看到 https://stackoverflow.com/a/58421132/1126841 后,它看起来不仅仅是换行符后面的空格,而是换行后没有回车符,即光标前进一行而不返回该行的开头;与print("n")相比,无论光标当前在哪里,它都前进到下一行的开头。(这更有意义,我应该记住这一点。

这些是空格字符的类型:

>>> string.whitespace
' tnrx0bx0c'

从文档中:

一个字符串,包含被视为空格的所有 ASCII 字符。这包括字符间距、制表符、换行符、回车符、换行符和垂直制表符。

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

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

我们通过引用 unicode 控制字符来了解这些空格字符是什么:
x0b是垂直制表符
x0c是表单提要

这些符号是可打印的空格(也可以通过string.whitespace获得(。x0bv是垂直制表符和x0c(f(,即表单提要(文档(。

在不同的终端中,表示形式可能不同,但通常v如下所示:

>>> print("somevtextvhere")
some
text
here

f强制打印机弹出当前页面,并在另一页的顶部继续打印。在终端中通常显示为空行。有时可用于清除屏幕。

这就是为什么这些符号被认为是可打印的。但是,表示和行为可能大不相同

来自 string.printable 的文档

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

其中空格定义为

一个字符串,包含被视为空格的所有字符。在大多数系统上,这包括字符空格、制表符、换行符、回车符、表单换行符和垂直制表符。

这些是空格字符。

这些字符属于whitespace字符系列(您可以查看>>> string.whitespace和python文档(。具体来说,\x0b 是 Unicode U+B 表示"行表",\x0c 是 Unicode U+C 表示"表单馈送"。

最新更新