当前位置: 首页 > news >正文

说说转义字符 “\”

转义字符-escape character

character 表示字符,包含两层含义,
1.字母
2.符号

转义:	改变含义
字符:	字母、符号
转义字符: 把 字母、符号 的含义改变了

注意:这里有 2 个常常被忽视、忽略、轻视的转义规则
1.一对一转义
就是说,\只对离它最近的那一个字母符号进行转义
2.只进行表层转义,不会进行嵌套或者递归转义(举例:\\\\ 在python 看来是 \\ 而不是 \),这里看不懂就往下看,看到最后就明白什么意思了。

计算机语言中,用 \ 实现转义的功能
其实,就是人为规定,给\多增加赋予了一个特殊的含义,\本身是个符号 反斜杠,同时它在编程语言中,还具备一个含义是告诉编程语言看到它的时候,就要开始做转义的工作了。
c族、java、python 这些语言都要遵守这个规则,编程语言一旦看到 \,就知道 \ 后面的字符有了新的含义,跟在\后面的字符就不再是它原有具备的意思了。

来看,计算机语言中最典型的两个 被转了义的字母
LF/NL(Line Feed/New Line) 换行 \n
CR (Carriage Return) 回车 \r

字母 n 前面没有 \ 的时候,它就是一个普通的英文字母(字母表中排序第 14 位) ,可以和别的字母站在一起,形成一个单词,这就是它的含义,
比如:sun、on、know
但是,当 字母 n 前面有 \ 的时候,它就不再是那个普普通通的英文字母 n 了,它有了新的含义,这个含义,需要编程语言在看到 \ 的时候,去查询 计算机语言的规则(约定俗成、都必须遵守的章程),然后找到了它的新的含义是 回车(Carriage Return) ,然后编程语言就执行回车命令,来实现回车功能

python 语言来举个例子,
python 语言,是个有自己的解释器的语言,顺便解释一下 解释器,当你用记事本写了一段代码保存成了 py 文件,然后直接交给操作系统去执行,操作系统就懵逼了,你要嘎哈,你想嘎哈,面对着你编写的程序不知所措,这时候,就需要 python 用自带的 解释器 帮你把代码翻译给操作系统,操作系统就明白了原来你是让操作系统启动核弹发射器,然后操作系统就按照你的意图,跟随 python 解释器的翻译一步一步执行你的代码去毁灭世界了。

那么,你在写程序的时候,突然想让你的程序输出个换行(程序运行的时候),该怎么办?
那该有同学说了:那还不简单按个回车呗,没错按个回车确实能换行,但这个换行只是给你自己看的(编程的时候),而你要求的是,在别人执行你的程序时看到换行(编写程序的时候和程序运行的时候是两个不同的时态),你总不能跟着你的程序到处跑,等程序执行到换行那一步的时候,由帅气的你亲自按下回车键吧,如果只是一个电脑运行你的程序还好,那要是全国人民都在运行你的程序,你就是化身齐天大圣恐怕也忙不过来了吧。

转义字符就能解决这个棘手的问题,
在你的程序里写入代码 \n ,当程序运行的时候,python 看到符号 \ 就知道 \后面的 n 不再是普通字母了,于是立即去尝试解释并到编程语言规则表里查到 n 是换行的意思,就进行了换行操作。你的程序就顺利的执行下去,全国人民笑开颜。

好了,目前我们知道了一个普通的字母跟在\后面就有了新的含义,那符号捏?

咱们也别拐弯抹角的啦,直接上高难度的,\\ 是啥意思,
拿上面的规则套呗,当程序中出现了\编程语言就会开始准备做转义处理, \后面的字母、符号,表示这个字母、符号具备了新的意义,
但这次发现\后面跟的不是字母,而是符号,一查规则表里说了,跟在\后面的符号,就变成了普通的符号(文本的,字面上的,或者说字面打印),而不再具备其他的任何附加的功能和含义了,就是一个单纯的字面上的文本符号

来跑段代码试试:
1.\n
\n表示换行,因此,字母a 和 字母b被打印到了不同的行上,
在这里插入图片描述
2.\\n
python 遇到第一个\,开始准备做转义的工作,发现后面不是字母,是字符,所以进行解释查规则表,把第二个\的附加功能和多余的含义去掉(即第二个\n不需要对其后面的字符进行转义工作),只保留其本身作为一个文本符号的含义,因此就打印输出了符号和字母的组合\n,最终打印结果是 a\nb
在这里插入图片描述
可见,在python代码中要输出文本符号 \,就需要在它的前面再加上一个\,即\\


加高难度,
加深理解
先看代码:
在这里插入图片描述
这说明,\只对离它最近的那一个字符进行转义的工作,
实际上,如果给print中的代码标上序号的话,我们在打印结果中看到的应该是 第二、第四、第六个 \,而第一、第三、第五个\完成了它的转义工作被消耗掉了。

假如我们在python里再使用正则表达式模块re ,会有什么不同吗?

在这里插入图片描述
可见,对于我们给定的字符串 str_test 的里面包含了 6 个 \ 反斜杠符号,
我们在 re 中指定的匹配规则是 :\\\\ ,所以当程序执行到这里看到出现了\,因此要开始进行解释转义工作了,连续的 4 个 \,根据一对一的原则,第一、第三个\参与了转义解释工作被消耗掉,第二、第四个\被剥夺了附加的功能和含义后作为纯粹的字面上的文本的符号保留下来,即 \\,而转义规则说过,只进行表层转义,不会嵌套、递归转义,所以,剩下的两个符号 \\,不会进行第二轮的转义工作变成 \

因此,re 根据匹配规则,在字符串 str_test 里搜索 文本双字符(两个反斜杠) \\,共找到 3 对 \ ,即 3 个 \\

看到这里,必须整明白了吧,不许还有糊涂的。
否则就参加不上第三次世界大战了。

march the 07th 2023 Tuesday

相关文章:

说说转义字符 “\”

转义字符-escape character character 表示字符,包含两层含义, 1.字母 2.符号 转义: 改变含义 字符: 字母、符号 转义字符: 把 字母、符号 的含义改变了注意:这里有 2 个常常被忽视、忽略、轻视的转义规则&…...

2023高质量设计竞赛汇总,想证明自己实力的快来

对于设计师来说,参加设计比赛不仅能够提升自己的设计能力,也是一条证明实力最好的捷径。小编也收集整理了不少近期设计大赛,分别标注了截止日期和官网等,宝子们记得码住收藏,赶紧SHOW起来!优酷X站酷 一千零…...

MongoDB与MySQL有区别吗?用一个表格跟你说明

MongoDB MySQL 数据库模型 非关系型 关系型 存储方式 虚拟内存持久化 不同引擎有不同存储方式 查询语句 独特MongoDB查询方式 传统SQL语句 架构特点 可通过副本集和分片实现高可用 常见有单点、M-S、MHA、MMM、Cluster等架构方式 数据处理方式 基于内存&#xf…...

ElasticSearch - 分布式文档索引、搜索、更新和删除文档的过程

文章目录1. 分布式文档存储1. 路由一个文档到一个分片中2. 主分片和副本分片如何交互3. 新建、索引和删除文档4. 取回一个文档5. 局部更新文档2. ElasticSearch相关问题1. 路由计算方式?2. 分片控制3. 分布式文档写入(索引)的过程?4. 分布式文档搜索的过…...

Python之re库用法细讲

文章目录前言一、使用 re 模块的前期准备工作二、使用 re 模块匹配字符串1. 使用 match() 方法进行匹配2. 使用 search() 方法进行匹配3. 使用 findall() 方法进行匹配三、使用 re 模块替换字符串四、使用 re 模块分割字符串总结前言 在之前的博客中我们学习了【正则表达式】的…...

MATLAB | 如何绘制github同款日历热力图

应粉丝要求,出一个类似于github热图的日历热力图,大概长这样: 依旧工具函数放在文末,如有bug请反馈并去gitee下载更新版。 使用教程 使用方式有以下几种会慢慢讲到: heatmapDT(Year,T,V)heatmapDT(Year,T,V,MonLim)h…...

认识适配器模式

适配器模式 一、定义 在不修改原来代码的情况下,适配器模式使接口不兼容的那些类可以一起工作。 二、适配器结构 1、Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或者接口,也可以…...

JavaSe第6次笔记

1.不建议使用c语言的数组的表示方法。 2.二维数组表示方法 3.数组整体初始化时,只能在定义时初始化。 int[] array; array new int[]{1, 2}; 4. boolean类型数组,默认值是false,String类型数组,默认是null,其它是…...

单例设计模式

介绍 单例模式是一种创建型设计模式,其主要特点包括: 只有一个实例:单例模式确保系统中只有一个实例对象存在,所有对该对象的访问都是对同一个对象的引用全局访问:单例模式可以全局访问该实例对象,避免了多个对象之间的冲突和竞争延迟初始化:单例模式通常使用延迟初始化技术,…...

第七章 opengl之光照(基础光照)

OpenGL基础光照环境光照漫反射光照镜面光照基础光照 主要需要理解一个模型是冯氏光照模型,主要结构由3个分量组成:环境,漫反射,镜面光照。下面分别描述下这三个光照: 环境光照(Ambient Lighting):即使在黑…...

不考虑分配与合并情况下,GO实现GCMarkSweep(标记清除算法)

观前提醒 熟悉涉及到GC的最基本概念到底什么意思(《垃圾回收的算法与实现》)我用go实现(因为其他的都忘了,(╬◣д◢)ムキー!!) 源码地址(你的点赞,是我开源的…...

性能分析利器:火焰图

什么是火焰图 火焰图(FlameGraph)是是由 Linux 性能优化大师 Brendan Gregg 发明的。通过 perf 等工具分析得到结果,看起来就像是火焰,这也是它的名字的由来。火焰图以一个全局的视野来看待时间分布,它从底部往顶部&am…...

八股总结(三)操作系统内存管理、进程线程、进程同步与通信、中断与异常、常用命令

layout: post title: 八股总结(三)操作系统内存管理、进程线程、进程同步与通信、中断与异常、常用命令 description: 八股总结(三)操作系统内存管理、进程线程、进程同步与通信、中断与异常、常用命令 tag: 八股总结 文章目录操作…...

概率论小课堂:条件概率和贝叶斯公式(机器翻译的工作原理)

文章目录 引言I 条件概率1.1 条件概率的定义1.2 条件概率的计算II 贝叶斯公式2.1贝叶斯公式的本质2.2 机器翻译的原理引言 对于几乎所有的随机事件来讲,条件概率由于条件的存在,它通常不等于本身的概率。 贝叶斯公式的本质:在数学上条件和结果可以互换,通过这种互换,可以…...

流量与日志分析

文章目录1.流量与日志分析1.1系统日志分析1.1.1window系统日志与分析方法1.1.2linux 系统日志与分析方法1.2 web日志分析iis 日志分析方法apache日志分析**access_log****error_log**nginx日志分析tomcat 日志分析主流日志分析工具使用1.流量与日志分析 日志,是作为…...

英文论文写作常用例句整理汇总(持续更新)

ContentsGeneral introductionProblem definitionGaps in literatureProblems solutionStudy motivationAims & objectivesSignificance and advantages of your work参考资料General introduction Research on __ has a long tradition For decades, one of the most pop…...

[N0wayBack 练习题] My_enc,Euler,EasyLock,RRRRSA,EasyNumber,pwn

加入一个队,队里的练习题不少,还有WP真好My_enc原题from secret import flag import randomdef Cyber_key(LEN):Key [[] for i in range(row)]for x in range(row):for i in range(LEN):Key[x].append(random.randint(0, 2023))return Keydef Punk_enc(Key, msg):out []for l…...

网分线缆测试和dc-block

今天的好苹果和坏苹果 好苹果:是校准件和网分都是好的,又给了我一次复盘的机会 网分测试线缆: 1.网分直接复位,如果网分复位是校准状态,且解的是精密转接头,BNC的,可以不校准,结果差…...

Java创建线程的方式只有一种:Thread+Runnable

Java创建线程的方式其实只有一种👨‍🎓一、继承Thread👨‍🎓二、实现Runnable接口👨‍🎓三、实现Callable接口👨‍🎓四、通过线程池创建👨‍🎓五、总结一般我…...

数据加密--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)

实例6:数据加密 数据加密是保存数据的一种方法,它通过加密算法和密钥将数据从明文转换为密文。 假设当前开发的程序中需要对用户的密码进行加密处理,已知用户的密码均为6位数字,其加密规则如下: 获取每个数字的ASCI…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

【Oracle APEX开发小技巧12】

有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...