[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines

简介: [oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines

换行回车

回忆上次内容

  • 区分概念
  • terminal终端
  • 主机网络中
  • 最终的 端点
  • TeleTYpewriter
  • 电传打印机
  • 终端硬件
  • shell
  • 终端硬件基础上的
  • 软件壳子
  • Console 控制台
  • 主机旁边 的 控制面板
  • 存储文件 的 时候
  • 我 在文件里 打了回车\n
  • 系统 将0x0a存入字节 进文件
  • 换行 自动就有 回车功能 了吗?🤔
  • 回忆一下
  • 被忽略的 \r

\r

  • \r 也是一个 ascii字符
  • \
  • 转义字符
  • \r
  • 转义序列
  • 什么是 转义 呢?
  • 转义转义 转化含义
  • 把原来 两个字符 : \r
  • 转化为 \r 这样一个字符
  • 没错!
  • \r1ascii字符

  • 那么 \r 这一个字符
  • 对应字节 是多少 呢?

字节状态

  • \r 对应的字节是
  • 0x0d

  • 这个0x0d
  • 好像 在安徒生童话中 出现过

安徒生童话

  • 文本观看 模式下
  • 自动 回车换行

  • 字节观看 模式下
  • 0a
  • 0a前面是0d
  • 0a换行
  • (line-feed)
  • 0d回车
  • (carriage-return)

  • 貌似
  • 总是 成对出现的
  • 为什么 呢?

换行 和 回车

  • 换行
  • 对应 字节0x0a
  • Line-Feed
  • 水平 不动
  • 垂直 向上喂纸
  • 所以是 feed

  • 回车
  • 对应 字节0x0d
  • Carriage-Return
  • 垂直 不动
  • 水平 到纸张左侧
  • 可移动的打印头
  • 运输字符 的 装置 (Carriage)
  • 回到行首
  • 所以是 Return
  • 这是 个控制信号
  • 不过他俩 经常 联合使用

联合使用

  • CRLF 联合使用时
  • 会将 打印纸张 上移一行
  • 打字位置 将到 新行的最左侧
  • 也就是
  • 今天所理解 的 回车换行

  • 电传打字机
  • 渐渐 退出了历史舞台
  • 当初的纸张 变成了 今天的显示器
  • 打字机的按键 也演变为 如今的键盘
  • 甚至 有了 操作系统
  • 操作系统 是 如何理解 回车换行 的呢?

操作系统 Unix

  • 受限于
  • 内存和软盘空间 的 不足
  • 设计者 决定采用
  • 个字符 来表示 换行回车
  • 使用 \n 替代 \r\n
  • 默认 \n = \r\n
  • 个字符干个事

  • 类unix(unix-like) 都是如此
  • 包括 BSD、Linux

unix 和 c 的羁绊

  • C语言
  • 延续了 这个惯例
  • \n
  • 既干 \n的活(换行)
  • 又干 \r的活(回车)
  • 输出中有 \n 的话

  • 如果只有\n
  • 本应是
  • 下图这样的

  • 实际上是
  • 下图这样的

  • 是 回车加换行 的
  • 那还有
  • 纯换行 不回车的效果 吗?

纯换行

  • 纯换行效果可以用\v

  • \v 在ascii中的含义是VT
  • 垂直制表位

  • 序号是 11

Commodore64 和 mac

  • Commondore64
  • 一度 也曾 很流行
  • 同样出于 节省空间的目的
  • 使用 \r 代替 \r\n
  • 这 就有分歧
  • Commodore64 影响了 mac
  • mac
  • 早期 也是
  • 使用 \r 代替 \r\n
  • 甚至按键 都叫做 return
  • 后来 为了 和unix保持一致
  • \r 修改为 \n
  • 可能是因为Mac用户
  • 需要用 ssh 命令
  • 连接 unix-like的服务器
  • 换行不统一
  • 文件读取会出现错误
  • 流行的三大系统(类unix、mac、win)
  • 两个都是\n
  • 来来看看 微软的windows

微软

  • DOS系统 是兼容 CP/M 形成的
  • CP/M 使用 \r\n
  • 键盘上 印的名称是enter
  • 符号是↵
  • 先 LineFeed 再 Return
  • 也是\r\n
  • 对应字节是b"\x0d\x0a"
  • 后来 的 windows
  • 顺着 DOS的惯例

  • 跨系统 浏览文档的时候
  • 会有时候  多行 变成 一行
  • 有的会出现 '0D', '^M' 之类的乱码
  • 不只是 windows记事本🗒️
  • 而且 微软office 等
  • 都曾有 这个困扰
  • win10 最新的记事本🗒️
  • 已经 优化

python 解释器的理解

  • 标准 输入输出流
  • python 的 字符输入
  • 靠的是 终端键盘
  • python 的 显示输出
  • 靠的是 终端屏幕
  • 具体字符
  • 显示\n的时候
  • 就会换行
  • LineFeed
  • 显示\r的时候
  • 就会退回到本行开头
  • CarriageReturn

  • \n 写入文件的时候
  • 就会以 b"\x0a"的字节形式
  • 存储 在 文件 中
  • \r 写入文件的时候
  • 就会以 b"\x0d"的字节形式
  • 存储 在 文件 中
  • python3解释器 基于  操作系统
  • 操作系统 基于 cpu架构
  • 不管什么样的操作系统cpu 架构
  • 只要是 python解释器
  • 对于\n\r的解释方式 就是统一的
  • \n 换行
  • \r 退到行头
  • 这种统一 是跨平台的
  • 跨系统、跨cpu架构的

总结

  • 对于换行和回车
  • 不同层面的理解
  • 电传打字机
  • 两件事
  • 经常 一起干
  • 但也可以 分别干
  • 不同操作系统
  • unix-like
  • 带头简化 成 \n
  • 步调一致 就好
  • mac
  • 为了 避免麻烦
  • 我和 unix-like一致
  • windows
  • 原来 我用户多
  • 定什么规矩 我说了算
  • 惹了 很多问题
  • 现在 我还是 随大流 吧
  • python 解释器
  • unix-like 做得对
  • 不管 在什么系统、什么架构 上
  • 在我python上 是统一 的
  • 光说不练假把式
  • 我能看看电传打字机吗?🤔
  • 我们下次再看!👋蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython
  • 视频->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy
目录
相关文章
|
2月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
63 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
13天前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
12 1
|
24天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
31 4
|
1月前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
22 1
|
17天前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
12 0
|
1月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
23 3
|
1月前
|
Go Python Windows
聊一聊 Python 的换行以及转义
聊一聊 Python 的换行以及转义
53 2
|
1月前
|
存储 C++ Python
[oeasy]python037_ print函数参数_sep分隔符_separator
本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
36 0
|
2月前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
29 4
|
3月前
|
算法 Unix 程序员
[oeasy]python031_[趣味拓展]unix起源_Ken_Tompson_Ritchie_multics
回顾了上次内容关于调试的基本概念后,本文介绍了Unix操作系统的起源。从早期计算机任务的独占执行方式讲起,到1960年代 Dartmouth 开发出分时算法,使得一台主机能够面对多个终端,轮流使用CPU时间片。随后,贝尔实验室、通用电气和MIT合作开展Multics项目,项目成员Kenneth Thompson与Dennis Ritchie在此期间开发了一款名为《Space Travel》的游戏。然而,因金融动荡等原因,Multics项目最终被裁撤。Thompson和Ritchie后来利用实验室闲置的一台PDP-7计算机仅用三周时间就开发出了Unix操作系统的第一版,初衷是为了能够继续玩游戏。
42 3
下一篇
无影云桌面