〇、引入
尝试在 Python 当中直接打印 \this\is\not\the\boat
,你会发现:
Python 3.12.5 (tags/v3.12.5:ff3bc82, Aug 6 2024, 20:45:27) [MSC v.1940 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("\this\is\not\the\boat")
<stdin>:1: SyntaxWarning: invalid escape sequence '\i'
his\is
ot hoat
输出内容很奇怪,还有一个 SyntaxWarning
。这是怎么回事?
再试试打印 He's saying "Hello World"
>>> print('He's saying "Hello World"')
File "<stdin>", line 1
print('He's saying "Hello World"')
^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
这又是怎么回事呢?
一、什么是转义序列?
Python 中,转义序列是一些无法直接输入或具有特殊含义的字符。
Microsoft Learn - C 语言参考: 由反斜杠 ( \ ) 后接字母或数字组合构成的字符组合称为“转义序列”。要在字符常量中表示换行符,单引号或某些其他字符,必须使用转义序列。
使用转义字符可以方便地处理字符串中的特殊情况,比如上面提到的“换行”。
根据Python 文档,如未标注 'r'
或 'R'
前缀,字符串和字节串字面值中,转义序列以类似 C 标准的规则进行解释。
二、有哪些转义序列(字符)?
下方列出 Python 文档中提到的几个常见转义序列,表后将详细介绍。如果对其他相关知识感兴趣,可自行查阅 Python 文档。
转义序列 | 含意 | 备注 |
---|---|---|
\ | 忽略反斜杠与换行符 | (1) |
\\ | 反斜杠(\ ) | |
\' | 单引号(' ) | |
\" | 双引号(" ) | |
\a | ASCII 响铃(BEL) | |
\b | ASCII 退格符(BS) | |
\f | ASCII 换页符(FF) | |
\n | ASCII 换行符(LF) | |
\r | ASCII 回车符(CR) | |
\t | ASCII 水平制表符(TAB) | |
\v | ASCII 垂直制表符(VT) |
注释:
可以在行尾添加一个反斜杠来忽略换行符:
>>> 'This string will not include \ ... backslashes or newline characters.' 'This string will not include backslashes or newline characters.'
- ...... 与 C 标准不同,无法识别的转义序列在字符串里原样保留,即, 输出结果保留反斜杠 。(调试时,这种方式很有用:输错转义序列时,更容易在输出结果中识别错误。)
在 3.6 版本发生变更: 不可识别的转义序列会产生
DeprecationWarning
。在 3.12 版本发生变更: 不可识别的转义序列会产生
SyntaxWarning
。 在未来的 Python 版本中将最终改为SyntaxError
。
下面将继续介绍常用的转义序列。
1. \ - 续行符
参考上方注释,续行符对不同行的内容进行连接,使其作为完整的一行内容来输出。
2. \\ 与 \' 与 \" - 反斜杠、单引号和双引号
当需要在字符串中直接表示反斜杠 \
时、在单引号字符串中插入双引号时、在双引号字符串中插入单引号时,可以使用它们进行转义并正常输出。
3. \a - 响铃符
让你电脑的操作系统发出提示音。
4. \b - 退格符
删除前一个字符。
5. \f - 换页符
在文本中插入换页。
6. \n - 换行符
表示换行——当前行在该点结束,其后立即开始新行。
7. \r - 回车符
将光标移动到行首。
8. \t 与 \v - 水平与垂直制表符
通常用于缩进,表示水平与垂直制表符。
三、如何避免不正确的转义?
可以通过在字符串前加上'r'
来避免转义,这样 Python 就会将其视为原始字符串,不对其中的反斜杠进行转义。
例如,如果我们想要打印出路径 C:\new\text.txt
,但不希望反斜杠被转义,可以这样做:
print(r'C:\new\text.txt')
本文(https://www.cgtsoft.com/archives/18/)来源于 CGT Software,使用 CC BY-NC-SA 4.0 许可发布。