0
点赞
收藏
分享

微信扫一扫

Python 转义序列


简述

在字符串中,有时需要包含一些特殊的符号,但是有些符号不能直接输出,就需要使用转义序列。

关于转义,维基百科这样定义:

转义是当由于技术等原因、无法直接在代码中写出所要的字符时采用的,以多个字符的有序组合来表示原本需要的字符的手段,而转义序列(escape sequence)指在转义时使用的有序字符组合。

| 版权声明:一去、二三里,未经博主允许不得转载。

转义序列

作为一名伟大的程序员,在向别人介绍自己的职业时,往往会很自豪的说:​​Hi, "I'm a Pythonista"​​。如果要在 Python 中表示这句话,不能直接使用单引号或双引号。

>>> print('Hi, "I'm a Pythonista"')
...
SyntaxError: invalid syntax
>>>
>>> print("Hi, "I'm a Pythonista"")
...
SyntaxError: invalid syntax

要解决这个问题,有两种方式:

  • 使用三重引号
  • 使用转义序列

转义序列以反斜杠(​​\​​)开头,并以不同的方式解释。如果使用单引号来表示字符串,那么字符串内的所有单引号都必须转义,双引号也不例外。

>>> print('''Hi, "I'm a Pythonista"''')  # 使用三重引号
Hi, "I'm a Pythonista"
>>>
>>> print('Hi, "I\'m a Pythonista"') # 转义单引号
Hi, "I'm a Pythonista"
>>>
>>> print("Hi, \"I'm a Pythonista\"") # 转义双引号
Hi, "I'm a Pythonista"

以下是 Python 支持的所有转义序列的列表:

转义序列

说明

​\(行尾)​

续行符

​\\​

反斜杠

​\'​

单引号

​\"​

双引号

​\a​

响铃

​\b​

退格(Backspace)

​\f​

换页

​\n​

换行

​\r​

回车

​\t​

水平制表符

​\v​

垂直制表符

​\ooo​

值为八进制 ooo 的字符

​\xhh​

值为十六进制 hh 的字符

测试其中的转义序列,感受一下实际的意思:

>>> print('C:\\Windows\\System32')
C:\Windows\System32
>>>
>>> print('I like \nPython')
I like
Python
>>>
>>> print('This is \x48\x45\x58')
This is

原始字符串

原始字符串(Raw String),简单理解就是:字符串中的每个字符都表示原始含义。

有时,可能希望忽略字符串中的转义序列:

>>> print('This is \x48\x45\x58')
This is

遗憾的是,这里的反斜杠并不是原始符号的含义,而是和后面的字符一起表示十六进制(被转义了)。

如何避免呢?很 easy,为字符串加上前缀 r 或者 R(大小写均可):

>>> print(r'This is \x48\x45\x58')
This is

R 是 Raw 的缩写,以其开头的字符串被称作原始字符串,并将反斜杠视为原义字符。因此,其中的任何转义序列都不会被特别处理,将会被忽略。


举报

相关推荐

0 条评论