【Python 基础篇】转义字符汇演

一、背景

在《Python字符串》一节中我们曾提到过转义字符,就是那些以 反斜杠 \ + 字符'x' 开头的字符。

ASCII 编码为每个字符都分配了唯一的编号,称为编码值。在 Python 中,一个 ASCII 字符除了可以用它的实体(也就是真正的字符)表示,还可以用它的编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。

转义字符以\0或者\x开头,以\0开头表示后跟八进制形式的编码值,以\x开头表示后跟十六进制形式的编码值,Python 中的转义字符只能使用八进制或者十六进制。具体格式如下:

\0dd       // dd 表示八进制数字;最大数字为\077,也就可以表示最多64个编码
\xhh       // hh 表示十六进制数字;最大数字为\xFF,也就是可以表示最多256个编码。可以  表示所有ASCII 128个字符空间

 ASCII 编码共收录了 128 个字符,\0\x后面最多只能跟两位数字,所以八进制形式\0并不能表示所有的 ASCII 字符,只有十六进制形式\x才能表示所有 ASCII 字符。

我们一直在说 ASCII 编码,没有提及 Unicode、GBK、Big5 等其它编码(字符集),是因为 Python 转义字符只对 ASCII 编码(128 个字符)有效,超出范围的行为是不确定的。

字符 1、2、3、x、y、z 对应的 ASCII 码的八进制形式分别是 61、62、63、170、171、172,十六进制形式分别是 31、32、33、78、79、7A。下面的例子演示了转义字符的用法:

str1 = "Oct: \061\062\063"
str2 = "Hex: \x31\x32\x33\x78\x79\x7A"
print(str1)
print(str2)

运行结果:

Oct: 123
Hex: 123xyz
[Finished in 189ms]

 注意,使用八进制形式的转义字符没法表示 xyz,因为它们的编码值转换成八进制以后有三位。

对于 ASCII 编码,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,甚至无法从键盘输入,只能用转义字符的形式来表示。不过,直接使用 ASCII 码记忆不方便,也不容易理解,所以,针对常用的控制字符,C语言又定义了简写方式,完整的列表如下

表 1 Python 支持的转义字符
转义字符说明
\n换行符,将光标位置移到下一行开头。
\r回车符,将光标位置移到本行开头。
\t水平制表符,也即 Tab 键,一般相当于四个空格。
\v垂直制表符,也即 Tab 键,一般相当于四个空格。
\a蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。
\b退格(Backspace),将光标位置移到前一列。
\\反斜线
\'单引号
\"双引号
\在字符串行尾的续行符,即一行未完,转到下一行继续写。

转义字符在书写形式上由多个字符组成,但 Python 将它们看作是一个整体,表示一个字符。

Python 转义字符综合示例:

#使用\t排版
str1 = '网站\t\t\t域名\t\t\t\t\t年龄\t\t价值'
str2 = 'C语言中文网\tc.biancheng.net\t\t8\t\t500W'
str3 = '百度\t\t\twww.baidu.com\t\t20\t\t500000W'

print(str1)
print(str2)
print(str3)

print("--------------------")

# \n在输出时换行,\在书写字符串时换行
info = "Python教程:http://c.biancheng.net/python/\n\
C++教程:http://c.biancheng.net/cplus/\n\
Linux教程:http://c.biancheng.net/linux_tutorial/"
print(info)

 运行结果:

 二、具体转义字符练习

2.1  \n  换行符

换行显示。

2.2  \r  回车符

将光标位置移到本行开头:

print("-------\r*******\r+++++++\r#######")

#### 输出结果:
-------
*******
+++++++
#######

 2.3  \t   水平制表符

水平制表符,也即 Tab 键,一般相当于四个空格。
print("-------\n\t*******\n\t\t+++++++\n\t\t\t#######")

#### 输出结果:
-------  # 4个空格
	*******   # 4个空格
		+++++++    # 4个空格
			#######   # 4个空格

2.4  \v   垂直制表符 

print("python\vmust")

#### 输出结果:

pythonmust  # 垂直制表符,多在打印机上面实现,在显示上,一般没法输出。多以<0x0b>显示

 2.5  \a   蜂鸣器响铃

注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效.

 2.6  \b   退格(Backspace)退格符,将光标前移,覆盖

将光标位置移到前一列

代表退格,即\b后面的一字符替换\b前面的一个字符;若\b后面的是空格则效果上是删除了\b前面的一个字符,其实是\b后面的一各空格替换了\b前面的那个字符;如果\b后面没有任何字符,实际上是没有效果的。更多的,如果出现连续的多个\b则是最后一个\b后面的多个字符替换最前面\b前面的多个字符。

>>> print('hello\bworld')
hellworld

 2.7  \\ 转义斜杠

>>> print('http:\\www.baidu.com')
http:\www.baidu.com

2.8  r 

字符串前加字母"r"表示后面字符串中不进行转义

>>> print(r'http:\\www.baidu.com')
http:\\www.baidu.com

2.9  \r  回车

return光标移动到本行的开头

示例: 

在命令行实现倒计时功能:

import time
 
for i in range(10):
    print(f"\r离程序退出还剩{9 - i}秒", end='')
    time.sleep(1)

 命令行实现转圈功能 :

import time
lst = ["\\", "|", "/", "———"]
for i in range(20):
    j = i % 4
    print("\r" + lst[j], end="")
    time.sleep(0.2)

 实现进度条功能:

# 进度条功能
import time
 
for i in range(10):
    print("\r" + "■"*i, sep="", end="")
    time.sleep(0.2)
print("\n下载完成")

 实现删除效果功能:

import time
s = "枝上柳绵吹又少,天涯何处无芳草"
l = len(s)
for i in range(l):
    print("\r" + s[:l-1-i] + "|", end="")
    time.sleep(0.15)

三、 ASCII编码背景知识回顾

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值