python打印非字母ASCII字符的奇怪行为
我有以下Python代码:python打印非字母ASCII字符的奇怪行为,python,macos,terminal,ansi-escape,Python,Macos,Terminal,Ansi Escape,我有以下Python代码: for num in range(80, 150): input() print(num) print(chr(27)) print(chr(num)) input()语句仅用于控制for循环的速度。我并不期望这会有什么特别的作用,但当循环命中某些数字时,打印ASCII字符(前面是ASCII 27)(即ESC字符)会发生一些意想不到的事情: 在92和94处,数字不打印 在99(字母c)时,一组终端输出被删除 在108处(字母l),当
for num in range(80, 150):
input()
print(num)
print(chr(27))
print(chr(num))
input()语句仅用于控制for循环的速度。我并不期望这会有什么特别的作用,但当循环命中某些数字时,打印ASCII字符(前面是ASCII 27)(即ESC字符)会发生一些意想不到的事情:
- 在92和94处,数字不打印
- 在99(字母c)时,一组终端输出被删除
- 在108处(字母l),当前行向上跳了几行(但文本仍在下面)。(没有获得合适的屏幕盖,如果有帮助,我会在以后添加一个)
- 在128或129处,第一个字符开始被屏蔽。您必须键入一些内容(我键入了“jjj”),以防止该行发生这种情况
我不知道为什么会发生这种情况,尽管我认为这与ESC角色与终端交互有关。有人能帮我解决这个问题吗?
Esc
用这些字符为终端生成一个特殊的代码
终端控制代码是一个特殊的字符序列
打印的(与任何其他文本一样)。如果终端理解代码,
它不会显示字符序列,但会执行一些操作。
您可以使用简单的echo命令打印代码
比如说,
- ESC/=ST,字符串终止符(chr(92))
- ESC^=PM,隐私信息(chr(94))李>
- ,
- escapec(重置终端)
- escape^(开始一条隐私消息,导致其他字符被吃掉)
C1
控制。其中几个角色被视为与另一个角色组合的转义。C1
和“另一个字符”之间的映射并不简单,但有趣的是
这是设备属性,导致将字符发送到主机0x9a
它是控制序列的发起方,通常被视为escape[0x9b
- (特别是)