[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 ...
随机推荐
- T2T-ViT:更多的局部结构信息,更高效的主干网络 | ICCV 2021
论文提出了T2T-ViT模型,引入tokens-to-token(T2T)模块有效地融合图像的结构信息,同时借鉴CNN结果设计了deep-narrow的ViT主干网络,增强特征的丰富性.在ImageN ...
- 可视化学习:使用极坐标参数方程和SDF绘制有趣的图案
前言 本文将介绍如何使用极坐标参数方程和上一篇文章提到的距离场SDF来绘制有趣的图案. 说到曲线和几何图形的绘制,我们知道图形系统默认支持的是通过直角坐标绘制,但是有些曲线呢,不太容易使用直角坐标系来 ...
- sqlserver 把 某一列的所有值 变成 in 里面的内容
SELECT STUFF(( SELECT ','+'''' +convert(VARCHAR, cDefine3)+'''' from rdrecord08 where dDate>'20 ...
- 从源码的角度弄懂MyBatis动态代理开发原理
MyBatis提供了一种动态代理实现SQL调用的功能,使用者只需要在映射文件中配置SQL语句与映射规则即可完成SQL调用和结果集封装.下面代码展示了动态代理调用的基本步骤: public void t ...
- MLP实现minist数据集分类任务
1. 数据集 minist手写体数字数据集 2. 代码 ''' Description: Author: zhangyh Date: 2024-05-04 15:21:49 LastEditTime: ...
- MySQL学习笔记-SQL实践1
SQL实践1 借着学校的数据库实验,来对之前学习的SQL语言进行实践和总结. 实验环境: macOS 13.2 (22D49) mysql Ver 8.0.32 for macos13.0 on ar ...
- ko编译常见问题
记录ko编译过程中遇到的常见问题: (1)找不到标准库头文件 解决方式:将lib库中的头文件链接到编译内核中.
- Java中对的创建与引用
对象与引用 Java语言中除了基本数据类型以外都属于引用类型 Java中的对象是通过引用对其操作的 class Car{ String name; String color; int price; } ...
- 对于 EI K 逆序对排列计数的另一种自然求和方法的理解
有一个简单的 \(O(n^3)\) DP,考虑 \(f_{x + 1, k} = \sum_{j = 0}^{x} f_{x, k - j}\),利用前缀和优化即可. 考虑这实际上是 \(f_{x + ...
- ABC326
上次说我的写法low的人的AT号在这里!!( 我又来提供 low 算法了. 从 D 开始. T4 我们把 \(\text{A}\) 看成 \(1\),把 \(\text{B}\) 看成 \(2\),把 ...