关于Python的转义字符,精华都在这里
在Python中的一些特殊符号在表示的时候需要用转义字符
>>> print('/')
/
代码解读
我们要打印一个 “斜杠”,很简单吧!
但是你打印个 “反斜杠” 试试呢!
>>> print('\')
SyntaxError: EOL while scanning string literal
代码解读
遇到了错误。
这是怎么回事?
归因于Python语言中反斜杠符号"\"被用作转义字符的作用。
我们可以认为原本那个单引号并不会被显示出来,
而是具有特定的作用:用于标识字符串内容。(注:这不是说这个符号本身有什么特别的功能,
而是它起到了某种引导作用。)
而转义字符的作用则是将这一引导功能暂时撤销,
使它回归到仅仅表示一个普通的字符状态。(注:这种转变过程可以用一种比喻来形容:
就像反斜杠像是一位转换师,
将原本属于字符串的部分从它的位置上转移到别处了。)
举个例子来说吧——如果我们想在代码中直接打印一个单引号该怎么办?
按照常规的做法,
如果我们将一个单独的反斜杠包裹起来使用,
比如""""
实际上并不会得到预期的结果。
print(''')
代码解读
那我用上转义字符即可:
>>> print('\'')
'
代码解读
这样第二个单引号就回归了原本!
总结
| 符号 | 作用 |
|---|---|
| |把反斜杠的“转义字符”作用去除,即变为真正的反斜杠。显示( \ ) | |
| \’ | 把单引号的“表示字符串”作用去除。显示( ’ ) |
| " | 把双引号的“表示字符串”作用去除。显示( " ) |
| \a | 把 a 转成“响铃”(BEL) |
| \b | 把 b 转成“退格符”(BS) |
| \n | 把 n 转成“换行符”(LF) |
| \t | 把 t 转成“水平制表符”(TAB) |
| \v | 把 v 转成“垂直制表符”(VT) |
| \r | 把 r 转成“回车符”(CR) |
| \f | 把 f 转成“换页符”(FF) |
| \0dd | 把 dd 转成“八进制”对应的ASCII码 |
| \xhh | 把 hh 转成“十六进制”对应的ASCII码 |
无需过多补充说明前三项。关于"响铃"功能的具体作用一直让我感到困惑。据说是让主板上的蜂鸣器响,例如在开机时会发出类似蜂鸣器的声音,但这样设计到底有什么实际意义呢?如果有朋友对此有疑问或见解也欢迎留言讨论。
接下来的 “退格符” 是非常坑爹的东西,你如果直接在 IDLE 中尝试,你会发现:
>>> print('aa\bkk')
aakk
代码解读
这玩意儿完全没用呀!到底是怎么回事呢?
无法在IDLE中显示退格符的具体原因尚不清楚。
这也是一个尚未解决的问题。
这玩意儿完全没用呀!到底是怎么回事呢?
无法在IDLE中显示退格符的具体原因尚不清楚。
这也是一个尚未解决的问题。
我是MAC系统,所以在终端中启动Python才行:
# 首先打开终端,输入 python3.7
# 然后就进入了 Python 的界面
>>> print('aa\bkk')
akk
代码解读
终于看到 “退格符” 的效果了,内牛满面!
下面几个就很简单了,直接演示案例:
>>> print('1\n2')
1
2
>>> print('1\t2')
1 2
>>> print('1\v2')
1
2
>>> print('1\r2')
1
2
>>> print('1\f2')
1
2
代码解读
由于在 IDLE 中,垂直制表符,回车符,换页符看起来是一样的。
后面的转码会比较复杂,但实际使用中感觉也不是很常用。
dd 表示八进制数字,hh 表示十六进制数字。
ASCII 编码包含 128 个字符。\0 和 \x 后面最多仅能跟两位数字。因此,在八进制形式中。\0 并不能涵盖所有的 ASCII 字符。\但在十六进制形式中。\则可用 \x 来表示所有的 ASCII 字符。
在当前情境中需要注意的是,在使用Python时,请确保转义字符仅限于ASCII编码而起作用。对于Unicode、GBK、Big5等其他编码(字符集),目前并未提供相应的功能支持。
来看具体案例吧:
>>> print('八进制:\061\062\063')
八进制:123
>>> print('十六进制:\x31\x32\x33\x78\x79\x7A')
十六进制:123xyz
代码解读
转义字符的实际应用大家有用过哪些?欢迎留言讨论!
