首先,我们需要知道的是,在python中/
所代表的是正斜杠,而\
代表的是反斜杠。关于反斜杠的使用,我认为转义二字就是其用法的本质。转义,我的理解就是通过对反斜杠的使用,使字符、格式等与其原来意义不同,转变为另一种含义。
- 转义字符:
顾名思义,也就是在我们编码时会使用到的特殊字符。
转义字符 | 描述 |
---|---|
\(处于行尾位置) | 续行符 |
\\ | 反斜杠 |
’ | 单引号 |
\” | 双引号 |
\b | 退格 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
(1). 续行符
我们在编码时,每一行的代码数量是有限制的,而很多时候我们所要表达内容一行并不能完整表达,这时候就需要续行符来对不同行的内容进行连接,使其作为完整的一行内容来输出。
new_os = 'huawei' \
'HarmonyOS' \
' is coming'
print(new_os)
>>> huaweiHarmonyOS is coming
- 1
- 2
- 3
- 4
- 5
- 6
在使用pycharm这样的IDE进行编辑时,在字符串符号内输入回车会自动补上反斜杠对其进行续行。
(2).单引号&双引号
在由''
之间定义的字符串之中再出现单引号(或双引号之间再出现双引号)的情况,解释器会由于无法识别字符串定义的开始和结束位置而报错,这时候就需要反斜杠来对与定义字符串相同的引号形式之间出现的该引号或反斜杠进行转义说明,以确保python解释器可以将其正确解释。
new_os = 'huawei\'s HarmonyOS coming'
print(new_os)
>>> huawei's HarmonyOS is coming
- 1
- 2
- 3
- 4
但是如果在字符串之间出现的引号形式与定义字符串的字符串形式不同,则不需要对其转义,比如在单引号之间定义的字符串中出现双引号(或反之):
new_os = 'huawei"s HarmonyOS is coming'
print(new_os)
>>> huawei"s HarmonyOS is coming
- 1
- 2
- 3
(3).反斜杠
如上单双引号的情况同理,而在字符串之间输入反斜杠也是同理:
new_os = 'huawei\\s HarmonyOS is coming'
print(new_os)
>>> huawei\s HarmonyOS is coming
- 1
- 2
- 3
路径:
经常与反斜杠打交道的的场景之一就是文件的路径了,不管是加载文件,输出文件,还是传入路径参数等等都会和斜杠打交道。
1、在macOS和Linux的系统下,路径默认使用的都是正斜杠,这样不会对编码产生什么影响,我们可以通过将文件直接拉进这两个系统的terminal中就可以看到对应文件路径。
/Users/houminghui/Desktop
- 1
2、在windows系统下,路径默认使用的是反斜杠:
C:\User\tech
- 1
在其中使用反斜杠所表示的路径在编码时就无法被正确识别,尤其是在这个示例中还出现了\t
这个表示横向制表符的转义字符,所以我们在使用中通常需要输入多个反斜杠:
path = 'C:\\User\\tech'
print(path)
>>> C:\User\tech
- 1
- 2
- 3
或者使用正斜杠来代替反斜杠的表示:
path = 'C:/User/tech'
print(path)
>>> C:/User/tech
- 1
- 2
- 3
(在表示路径时使用原始字符串要主要路径的结尾不能是奇数个\
,否则会被解释器认为是转义字符,从而使编码出现错误。)
(4).其他
我们经常使用的其他转义字符串比如\t
、\n
等等,需要将其放于字符串之中,转义字符较多:
new_os = 'huawei\ts HarmonyOS is coming'
print(new_os)
>>> huawei s HarmonyOS is coming
- 1
- 2
- 3
new_os = 'huawei\ns HarmonyOS is coming'
print(new_os)
>>> huawei
s HarmonyOS is coming
- 1
- 2
- 3
- 4
在这一小节中所述的转义字符较多,我觉得不需要整体都背下来,而在我们需要使用时查找使用即可。
-
正则表达式:
在正则表达式中对于一个反斜杠\
,需要使用普通字符串\\\\
,或者是使用原始字符串中的r"\\"
来对其进行匹配。
在正则表达式中\
是特殊符号,我们为了匹配到该字符串,取消其在正则表达式中的特殊含义,就使用\\
来匹配正则表达式中的\
,同时又为了取消反斜杠在普通字符串之中的特殊含义,又需要在之前的基础上再针对每一个反斜杠再增加一个反斜杠来取消其特殊含义,即为\\\\
。
当我们使用了原始字符串操作符后,就会取消了在普通字符串之中的转义功能,而只需要匹配正则表达式中的\
,即为r"\\"
。 下图为在pycharm中的单步调试示例。
[外链图片转存失败(img-JHEhqJc2-1566216459207)(media/15653520491842/15654048743527.jpg)] -
消除空行
该用法可去除字符串中的空行,但是会在输出的字符串前出现空格:
new_os = '''\
huawei\'s HarmonyOS is coming
'''
print(new_os)
>>> huawei's HarmonyOS is coming
- 1
- 2
- 3
- 4
- 5
如下,会在该字符串之前出现一条空行。
new_os = '''
huawei\'s HarmonyOS is coming
'''
print(new_os)
>>>
huawei's HarmonyOS is coming
- 1
- 2
- 3
- 4
- 5
- 6
- 7
如上是针对长字符串使用,注意定义该字符串的是三引号''' '''
,若是在普通定义下的字符串(单、双引号),在使用反斜杠去除空行后输出与长字符串一致,但是若不使用反斜杠则会报错。