转义字符

转义字符 \ 本身不被当作字符,如果要表示一个字符 \,需要自己将自己转义:

'\\'
'\\'
'\'
  File "<ipython-input-2-d44a383620ab>", line 1
    '\'
       ^
SyntaxError: EOL while scanning string literal

上面这一行报错信息是 SyntaxError: EOL while scanning string literal。这是因为 \' 表示的是单引号字符 '(Literal)—— 是可被输出到屏幕的 ',而不是用来标示字符串的那个 '—— 别急,无论哪个初学者第一次读到前面的句子都觉得有点莫名其妙…… —— 于是,Python 编译器扫描这个 “字符串” 的时候,还没找到标示字符串末尾的另外一个 ' 的时候就读到了 EOL(End Of Line)。

如果你想输出这么个字符串,He said, it’s fine.,如果用双引号扩起来 " 倒没啥问题,但是如果用单引号扩起来就麻烦了,因为编译器会把 it 后面的那个单引号 ' 当作字符串结尾。

'He said, it's fine.'
  File "<ipython-input-3-2bcf2ca6dd95>", line 1
    'He said, it's fine.'
                 ^
SyntaxError: invalid syntax

于是你就得用转义符 \

# 要么你这么写:
print('He said, it\'s fine.')
# 要么你这么写:
print("He said, it's fine.")
# 要么,不管用单引号还是双引号标示字符串,
# 都习惯于用 \' 和 \" 书写属于字符串内部的引号……
"He said, it\'s fine."
He said, it's fine.
He said, it's fine.


"He said, it's fine."

转义字符 \ 可与其他字符组合成有特殊含义的字符:

转义字符 说明
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\yy 八进制数 yy 码位的字符
\xyy 十六进制数 yy 码位的字符

续航符,可以将两行代码(或字符串)连接起来,表示一行:

for i in \
range(3): # 两行相当于 for i in range(10):
    print(i)
0
1
2
'hello \
world'
'hello world'

八进制和十六进制字符举例:

# 八进制字符
'\101', '\102'
('A', 'B')
# 十六进制字符
'\x41', '\x42'
('A', 'B')
# 十进制
chr(65),chr(66)
('A', 'B')

在正则表达式中,转义字符 \ 的应用更加普遍。详情请看《正则指引》