欢迎光临散文网 会员登陆 & 注册

[oeasy]python0079_控制序列_光标位置设置_ESC_逃逸字符_CSI

2023-08-05 18:13 作者:oeasy  | 我要投稿

光标位置

回忆上次内容

  • 上次我们研究的比较杂

    • 类型转化

    • 进制转化

    • 捕获异常

    • 版本控制

    • 生成帮助文档

    • 变量的常用类型

    • 变量的生命周期控制

  • 数据类型主要研究了两个

    • int

    • str

    • 字符串

    • 整型数字

  • 字符串型 和 整型数字型变量

    • 是可以相互转化的

  • 加法运算逻辑 会根据操作变量的不同 而不同

    • 整型变量的加法 是真的加

    • 字符串的加法 是字符串拼接

  • 字符串中有一些转义字符

    • \n

    • \r

    • \t

    • 都是什么意思来着??

  • 还有什么没见过的转字符吗??🤔

回忆转义

  • 转义转义

    • 转化含义

  • 下图中hello的o

    • 为什么消失了?

  • \b 是一个字符

    • 代表的含义是退格

  • hello中的o

    • 被退格符删除了

  • 如果不用chr

    • 想要直接打出上面的效果

    • 应该怎么办呢?

直接加起来

  • 想要用\b替换chr(8)

    • 程序报错了

  • 续行符(\)之后

    • 有不期待的字符

  • 想要获得同样的字符

    • 应该怎么办呢?

反斜杠的作用

  • \反斜杠(backslash) 在程序里面的作用

    • 是续行符

    • line continuation character

  • 当把\反斜杠(backslash)放入双引号里面之后

    • 在字符串中有特殊的含义

    • 可以和后面的字符一起

    • 构成转义序列

    • escape sequence

    • escape character

    • \反斜杠 就是 转义字符

    • 转义字符

  • 在下图中

    • 是由两部分组成

    • escape character

    • \ 转义字符

    • b 具体转到的含义

    • escape sequence

    • \b 就是转义序列

    • \b 这个转义序列

  • 这两个字符的序列组合起来的意思

    • 就是退格

    • backspace

  • 还有什么转义字符吗?

换行

  • \n 这个转义序列的意思是

    • line feed

    • 换行

  • \r 这个转义序列的意思是

    • carriage return

    • 回车

| 转义序列 | 中文含义 | 英文含义 | ascii序号 |
| --- | --- | --- | --- |
| \b | 退格 | backspace | 8 |
| \t | 制表键 | tab | 9 |
| \n | 换行 | line feed | 10 |
| \r | 回车 | carriage | 13 |

  • 可以看到更多的转义字符吗?

转义 Escape

  • 回忆

    • \xhh

    • \ooo

    • 可以用八进制

    • 用十六进制

    • 来表示转义字符

  • 这就是全部转义字符了吗?

控制字符

  • 转义字符

    • 具有一定的控制作用

    • 也被叫做 控制字符

    • control characters

  • 以下就是

    • ascii中的全部转义字符

  • 居然有转义序列

    • 转义之后的的含义是 escape

搜索结果

  • 来回顾一下🤔

  • \是转义字符

    • 要和后面的字符一起构成转义序列

  • \e是转义序列

    • escape

    • 也被称作 逃逸字符

  • 这 逃逸字符 escape

    • 逃逸指的是什么意思呢?

  • 我们来试试

动手实验

  • 实践证明

    • 直接使用\e是不行的

  • 但是可以使用

    • 用 \033 代替 \e

    • \e 的 8进制形式

  • 这样可以控制输出字符串的位置!!!

理解Escape

  • 真的可以逃逸出 当前输出序列

    • 控制定位 再输出

  • 从正常的输出流

    • 逃逸到了 控制序列!!!

逃逸

  • 从标准输出序列中逃逸出来

  • 可以让输出

    • 可就不是 输出的文本 了

    • 退出(Escape) 出去

    • 从当前的字符串序列中

    • 后面的内容

  • 而是 控制序列(Control Sequence)

    • 第10行第20列进行输出

    • [10;20H 控制 输出位置

  • 那为什么有控制序列呢?

缘起

  • 电传打字机 输出的颜色

    • 来控制 打印颜色的深浅

    • 是物理过程

    • 只能通过 控制色带(类似于墨盒)

  • 早期的终端

    • 都有 自己独特的 控制字符

    • 通过调节 显示器亮度

    • 来改变显示效果

    • 各个终端的 制造商

  • 这些特殊字符 是和 机器型号相关 的

    • 只要 接受到 这些控制字符

    • 终端 就可以 调整输出方式

    • 但是 并没有统一标准

统一标准

  • 但是不同终端

    • 控制方式不同

    • 可能 造成显示状态 异常

    • 远程终端输出结果不可控

    • 需要一个关于控制字符的统一标准

  • 1964 年 ISO 646

    • 整合为工业标准

    • 叫做 ANSI X3.64

    • 在欧洲以ECMA-6的形式存在

    • 后来被ANSI(American National Standards Institute)

  • 这个字符集 是不是很像 ascii

    • 而且包括了 整个黑暗森林

  • 这套标准

    • 本来 在各种电传打字机 被实现

    • 后来 在各种终端中 被实现

    • 现在 在terminal软件 被实现

esc 键

  • Teletype Model ASR-33 终端键盘

    • 数据通信行业 最受欢迎的终端之一

  • 1963 年推出

    • 注意 shift 和 ctrl 都已经出现

    • Alt Mode 出现在第 1 列

  • \e这个转义序列

    • 有了对应的按键吗?

  • ALT MODE

    • 是用来 切换模式的 特殊按键

    • 这是当时的 esc 键 吗?

总结

  • 这次了解了 新的转义模式

    • 这个字符 让字符串 退出标准输出流

    • 进行控制信息的设置

    • 可以设置 光标输出的位置

    • \033 逃逸控制字符 escape

  • ASR33中的ALT MODE

    • 是 今天的ESC键吗????🤔

  • 我们下次再说!*

  • 蓝桥->https://www.lanqiao.cn/courses/3584

  • github->https://github.com/overmind1980/oeasy-python-tutorial

  • gitee->https://gitee.com/overmind1980/oeasypython




[oeasy]python0079_控制序列_光标位置设置_ESC_逃逸字符_CSI的评论 (共 条)

分享到微博请遵守国家法律