[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines
换行回车
回忆上次内容
- 区分概念
- terminal终端- 主机网络中
- 最终的 端点
 
 
- 主机网络中
- TeleTYpewriter- 电传打印机
- 终端硬件
 
- shell- 终端硬件基础上的
- 软件壳子
 
 
- 终端硬件基础上的
- Console控制台- 主机旁边 的 控制面板
 
 
- 存储文件 的 时候
- 我 在文件里 打了回车\n
- 系统 将0x0a存入字节 进文件
- 换行 自动就有 回车功能 了吗?
 
- 我 在文件里 打了回车
- 回忆一下
- 被忽略的 \r
 
- 被忽略的 
\r
- \r也是一个 ascii字符- \是- 转义字符
 
- \r是- 转义序列
 
 
- 什么是 - 转义呢?- 转义转义 转化含义
- 把原来 两个字符 : \和r
- 转化为 \r这样一个字符
 
- 没错! - \r是- 1个- ascii字符
 

- 那么 \r这一个字符- 对应字节 是多少呢?
 
- 对应字节 是
字节状态
- \r对应的字节是- 0x0d
 

- 这个0x0d- 好像 在安徒生童话中 出现过
 
安徒生童话
- 在 文本观看 模式下- 自动 回车换行
 

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

- 貌似
- 总是 成对出现的
- 为什么 呢?
 
换行 和 回车
- 换行- 对应 字节0x0a
- Line-Feed
- 水平 不动
- 垂直 向上喂纸
 
- 所以是 feed
 
- 对应 字节

- 回车- 对应 字节0x0d
- Carriage-Return
- 垂直 不动
- 水平 回到纸张左侧
 
- 可移动的打印头
- 运输字符 的 装置 (Carriage)
- 回到行首
 
- 所以是 Return
 
- 对应 字节
- 这是 两个控制信号- 不过他俩 经常 联合使用
 
联合使用
- 当CR和LF联合使用时- 会将 打印纸张 上移一行
- 打字位置 将回到 新行的最左侧
 
- 也就是
- 今天所理解 的 回车换行
 

- 电传打字机
- 渐渐 退出了历史舞台
- 当初的纸张 变成了 今天的显示器
- 打字机的按键 也演变为 如今的键盘
 
- 甚至 有了 操作系统
- 操作系统 是 如何理解 回车换行 的呢?
 
操作系统 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 的 显示输出
- 靠的是 终端屏幕
 
 
- 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
- 原来 我用户多
- 定什么规矩 我说了算
- 惹了 很多问题
- 现在 我还是 随大流 吧
 
 
- unix-like
- 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
[oeasy]python0040_换行与回车的不同_通用换行符_universal_newlines的更多相关文章
- sql查询字段值的换行及回车符
		SQL的换行.回车符,在MySQL.SQL Server和Oracle中均有不同,下面以列表显示. MySQL SQL Server Oracle 换行符 \n或\r\n或CHAR(10) CHA ... 
- \r\n回车换行\r回车\n换行的区别
		在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候 ... 
- js实现把textarea通过换行或者回车把多行数字分割成数组,并且去掉数组中空的值。
		删除数组指定的某个元素 var msg = " "; //textarea 文本框输入的内容 var emp = [ ]; //定义一个数组,用来存msg分割好的内容 1. ... 
- html转义字符换行以及回车等的使用
		欢迎加入前端交流群交流知识&&获取视频资料:749539640 html换行回车转义字符 换行Line feed 回车Carriage Return html中换行转义字符 的使 ... 
- "换行"和"回车"的来历
		\r: return 到当前行的最左边. \n: newline 向下移动一行,并不移动左右. Linux中\n表示:回车+换行: Windows中\r\n表示:回车+换行. Mac中\r表示:回车+ ... 
- Flex 最全的换行,制表符,回车,空格......特殊符号
		字符 十进制字符编号 实体名字 说明 — &#; — 未使用Unused — &#; — 未使用Unused — &#; — 未使用Unused — &#; — 未使用 ... 
- 关于textarea中换行、回车、空格的识别与处理
		需求:在textarea中输入文字,提交给后台后,后台输出在另一个页面,文字按原格式显示. 问题:如何还原输入框中的换行和空格? 兼容性:IE9以上.FF.chrome在换行处匹配/\n/ ... 
- 斑马ZPL指令加入如换行、回车等控制符的方法
		在程序中可能会被过滤掉,直接在指令中加入ASCII对应的16进制字符即可解决改问题, 语法:_十六进制(ASCII) 栗子:hello_0D_0Aworld 换行 扫描结果: hello world 
- MySQL 去除字段中的换行和回车符
		今天csv 导入关键词的时候遇到问题 字段结束会有 回车符号 解决方法: ), ),''); char(10): 换行符 char(13): 回车符 
- mysql去除内容中的换行和回车
		UPDATE tablename SET field = REPLACE(REPLACE(field, CHAR(10), ”), CHAR(13), ”); char(10): 换行符 char(1 ... 
随机推荐
- 将外部jar打入本地maven仓库
			1.将jar包放入某不含中文的路径下 ,例如:E:\file\zip4j-1.3.2.jar 2.在命令行输入操作命令 mvn install:install-file -DgroupId=zip4j ... 
- Flask源码阅读
			上下文篇 整个Flask生命周期中都依赖LocalStack()栈?.而LocalStack()分为请求上下文_request_ctx_stack和应用上下文_app_ctx_stack. _requ ... 
- SQL 分析与优化神器,验证了真相定律
			引言 今天要分享的是一个 SQL 语句分析的神器,它是一个基于 Soar 的开源 sql 分析与优化的 Web 图形化工具.我们在平常分析 SQL 语句,使用最多的方式就是 Explain 工具.了解 ... 
- CSS置顶操作(z-index属性)
			z-index使用方法: 1.首先要把position设置为 absolute 或 relative 或 fixed,z-index才能生效 2.设置z-index的值(整数) # 值越大代表越置前, ... 
- K-D Tree 总结
			Luogu题单 前置芝士 \(K-D\;Tree\) 例题略解 P2479 [SDOI2010]捉迷藏 大概就是 K-D Tree 的板子题了吧,网上的打法都不太友好,参考了 fengwu 的打法. ... 
- 电脑网卡把报文的vlan tag去掉
			1 现象 现象说明:从电脑的网卡(用的Realtek)进来一个带vlan tag的报文,但是使用wireshark抓取的报文没有vlan tag. 解决方式如下:需要注册表. 参考链接1:https: ... 
- kettle从入门到精通 第三十七课 kettle 全量同步(数据量小)
			1.下图是一些常见的数据同步业务场景: 实时数据:对实时性要求很高,延迟在毫秒范围内.常见的有kafka/rabbitmq等消息中间件,mysql binlog日志,oracle归档日志等. 离线数据 ... 
- LNMP集群架构
			网站集群拆分 上一节我们是部署了单机的LNMP,再往下,要进行拆分了,无论是性能.还是安全性,都务必要拆分. 拆分的内容有 nginx集群 mysql nfs共享存储 等 拆分思路 情况1 当前的单机 ... 
- 接口加密传输设计及AES加解密代码DEMO
			接口加密传输设计及AES加解密代码DEMO 接口加密的方案设计:可以将请求的json字符串aes加密,通过params字段传输,接口服务端接收到参数,先解密,然后转换成对象.继续业务逻辑的处理.(另外 ... 
- 面试官:Java中缓冲流真的性能很好吗?我看未必
			一.写在开头 上一篇文章中,我们介绍了Java IO流中的4个基类:InputStream.OutputStream.Reader.Writer,那么这一篇中,我们将以四个基类所衍生出来,应对不同场景 ... 
