Python - 转义字符
转义字符
转义字符 是后跟反斜杠(\)的字符。它告诉 Interpreter 这个转义字符(序列)具有特殊含义。例如,\n 是一个表示换行符的转义序列。当 Python 在字符串中遇到这个序列时,它会理解需要开始新的一行。
除非有 'r' 或 'R' 前缀,否则字符串和 bytes 字面量中的转义序列会按照类似于 Standard C 使用的规则进行解释。在 Python 中,如果字符串在引号符号前加上 "r" 或 "R" 前缀,它就会成为 raw string。因此 'Hello' 是普通字符串,而 r'Hello' 是 raw string。
示例
在下面的示例中,我们实际演示了 raw string 和普通字符串。
# 普通字符串 normal = "Hello" print (normal) # raw string raw = r"Hello" print (raw)
以上代码的输出如下所示 −
Hello Hello
在正常情况下,两者没有区别。但是,当字符串中嵌入转义字符时,普通字符串会实际解释转义序列,而 raw string 不会处理转义字符。
示例
在下面的示例中,当打印普通字符串时,转义字符 '\n' 被处理为引入换行。然而,由于 raw string 操作符 'r',转义字符的效果不会按照其含义进行转换。
normal = "Hello\nWorld" print (normal) raw = r"Hello\nWorld" print (raw)
运行以上代码,将打印以下结果 −
Hello World Hello\nWorld
Python 中的转义字符
下表展示了 Python 中使用的不同转义字符 -
| 序号 | 转义序列 & 含义 |
|---|---|
| 1 | \<newline> 反斜杠和换行符被忽略 |
| 2 | \\ 反斜杠 (\) |
| 3 | \' 单引号 (') |
| 4 | \" 双引号 (" ) |
| 5 | \a ASCII 铃声 (BEL) |
| 6 | \b ASCII 退格 (BS) |
| 7 | \f ASCII 换页 (FF) |
| 8 | \n ASCII 换行 (LF) |
| 9 | \r ASCII 回车 (CR) |
| 10 | \t ASCII 水平制表符 (TAB) |
| 11 | \v ASCII 垂直制表符 (VT) |
| 12 | \ooo 八进制值 ooo 对应的字符 |
| 13 | \xhh 十六进制值 hh 对应的字符 |
转义字符示例
以下代码展示了上表中列出的转义序列的使用 −
# 忽略 \ s = 'This string will not include \ backslashes or newline characters.' print (s) # 转义反斜杠 s=s = 'The \\character is called backslash' print (s) # 转义单引号 s='Hello \'Python\'' print (s) # 转义双引号 s="Hello \"Python\"" print (s) # 转义 \b 以生成 ASCII 退格 s='Hel\blo' print (s) # ASCII 铃声字符 s='Hello\a' print (s) # 换行 s='Hello\nPython' print (s) # 水平制表符 s='Hello\tPython' print (s) # 换页 s= "hello\fworld" print (s) # 八进制表示 s="\101" print(s) # 十六进制表示 s="\x41" print (s)
它将产生以下 输出 −
This string will not include backslashes or newline characters. The \character is called backslash Hello 'Python' Hello "Python" Helo Hello Hello Python Hello Python hello world A A