Python 转义字符逐个详解
Python 转义字符逐个详解。一次性全面了解所有转义字符的含义及其用法。
本人在学习 Python 过程中对转义字符的用法不甚了解,在网上搜索一番过后没有发现一份很全面、详细的解读,于是自己整理了一份,制作不易,还请大家点赞支持一下。
文章在格式上可能与本人编辑的 Markdown 文件有所出入,建议各位去下载一份该文章的md文件(free)。
转义字符 | 描述 |
\ (在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\0 / \000 | 空字符(NULL) |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数 yy 代表的字符,例如, \o12 代表换行 |
\xyy | 十六进制数 yy 代表的字符,例如, \x0a 代表换行 |
\other | 其他字符以普通格式输出 |
\ddd | 1到3位八进制数所代表的的任意字符 |
1. \ (在行尾时)- 续行符
在每一行代码的最后添加 \ ( 注意反斜杠后不能加空格! ),它可以将一行代码分成多行来写,打印结果仍是一行内容,便于代码的编写和阅读,打印结果仍是一行内容。
a = '<我是第1行的内容>\
<我是第2行的内容>\
<我是第3行的内容>\
<我是第4行的内容>'
print(a) # <我是第1行的内容><我是第2行的内容><我是第3行的内容><我是第4行的内容>
2. \\ - 反斜杠符号
用 \\ 在字符串里表示反斜杠。
print("Hello\\World") # Hello\World
3. \' - 单引号
用 \' 在字符串里表示单引号。
print("What\'s your name?") # What's your name?
4. \" - 双引号
用 \" 在字符串里表示双引号。
print("\"Hello World\"") # "Hello World"
5. 程序员的小快乐——\a
该转义字符在实际应用中很少见,往往作为程序员的一个小彩蛋娱乐一下(或者可以在流程控制语句中导出 False时响铃提示?此处挖个坑,日后搞懂了来填坑)。在 Python 的解释器中无法真正响铃,在输出含有 \a 的字符串时,\a 的位置会由一个类似于 ^BELL^ 的标识表示出来。如:
a = 'Hello world!\a'
print(a)
得到的结果是这样的:
真正实现响铃操作,则需要 win + R 键,输入 cmd 打开控制台:
输入 Python 进入其解释器模式,然后输入以下代码:
import time
while True:
print("\a")
time.sleep(1) # 每次响铃的间隔时间为1秒
然后连敲两次回车键,就可以听到每秒响一次的系统提示音了,关闭控制台即可退出该程序。
6. \b - 退格
\b 相当于用了一次退格键 Backspace 。
print("Hello World\b") # Hello Worl
看到这里有人(比如说我)就有疑问了,既然 \b 相当于用了一次退格键 Backspace ,那为什么还要用这个转义字符呢,我直接把要删除的内容删掉不比这来的简单吗。
实际在计算机语言当中, Backspace 并不是删除的指令。组成 Backspace 的两个英文单词 back 和space 分别是回去和空间的意思,组合起来就是”往回走一步“,但与方向左键不同, Backspace 在向左移动光标位置的同时,将后面所有的内容都往前移了一个单位,并替换掉原有内容 。当我们在 Python 中输入字符时,如果输入后立即发现错误,使用 Backspace 键进行修改,这其实是使用退格键将后面的空(NULL)前移了一个单位 ,并替换掉当前位置的内容,给输入者以“删除”的假象。(根据个人理解编写,不一定完全正确)
那么 \b 有什么实际作用呢?
\b 可以连续使用,相当于连续敲 Backspace 键,而在最后一个 \b 后的内容也将替代原有内容,相当于起到替换的作用,而这种方法能够不破坏源代码。
print("Hello World\b\b\b\b\bDevil Ding") # Hello Devil Ding
此外用 \b 将特定字符串包裹,可以实现对某特定字符串的查找功能。
import re
a = ['hello','Cat',' cat', 'cat h','CAT','CAt-h','Cat_h']
p = re.compile(
r'\bcat\b', re.I)
print([s
for s in a
if re.search(p, s)]) # ['Cat', ' cat', 'cat h', 'CAT', 'CAt-h']
本人暂时就了解到 \b 的以上两种实际作用,欢迎大佬补充!本人在以后的学习中如果有遇到更多关于 \b 的用途,会对本文进行补充。
7. \0 / \000 - 空字符
\0 和 \000 乃至 \00 都是表示空字符(前两个更常见一些)。用来补足字符长度,满足某些项目对于等长字符串的需求。它们都表示一个空字符。在运行代码时空字符的位置会由类似上面 \a 的BELL的样式的NULL代替。 \ 后多出三个零的部分正常输出。
print(len("Hello World") ) # 11
print(len("Hello World\0") ) # 12
print("Hello World\000")
print("Hello World\0000") # 结果如下图所示
8. \n - 换行
与 \ 相反, \n 是将一行输出为多行。
print("<我是第1行的内容>\n<我是第2行的内容>\n<我是第3行的内容>\n<我是第4行的内容>")
9. \v - 纵向制表符
使用 \v ,纵向产生4个空字符,相当于竖着用 Tab 键。
暂时没有想到怎么用,未来进行补充。
10. \t - 横向制表符
使用 \t ,横向产生4个空字符,相当于用 Tab 键。
print("Hello\n\tWorld")
11. \r - 回车
在日常使用 Word 编辑文本时,回车键就是另起一行,从行首开始输入。但在 Python 中,\r 与 \n 的用法却大相径庭。\r (return) 指回到本行行首,\n (new line) 指开启新的一行。因此,要注意在编程语言中的回车与退格,和我们日常工作所理解的用法有很大区别!实例如下:
print("Hello", end="")
print("\r", end="")
print("World!", end="")
print("over\r")
print("\nover")
print("Hello", end="")
print("\n", end="")
print("World", end="")
12. \f - 换页
\f 后的内容实现换页打印,一般在调用文档编辑工具的页面实现此效果,直接打印会显示和上述 BELL & NULL 类似的字符效果。
13. \oyy
两位八进制数 yy 代表的字符。
14. \xyy
十六进制数 yy 代表的字符。与 \oyy 具体表示内容参考下图(先将八进制或十六进制数转化为十进制数再查找对应字符)。如 \o12 & \x0a 都代表换行。
需要注意的是:yy 表示两位数,因此 \oyy 无法显示所有的 ASCII 字符。这样就需要用到 \ddd 的方法用哪个八进制表示所有 ASCII 字符。
15. \other
其他字符以普通格式输出。
16. \ddd
三位八进制数 ddd 代表的 字符。
原字符 r / R
在存在转义字符的字符串前输入 r / R ,则转义机制失效,打印包括转义字符的所有内容。
print(r"Hello\\World") # "Hello\\World"
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)