全五种Python 转义表示法Word文档格式.docx

上传人:b****6 文档编号:19275451 上传时间:2023-01-05 格式:DOCX 页数:8 大小:559.13KB
下载 相关 举报
全五种Python 转义表示法Word文档格式.docx_第1页
第1页 / 共8页
全五种Python 转义表示法Word文档格式.docx_第2页
第2页 / 共8页
全五种Python 转义表示法Word文档格式.docx_第3页
第3页 / 共8页
全五种Python 转义表示法Word文档格式.docx_第4页
第4页 / 共8页
全五种Python 转义表示法Word文档格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

全五种Python 转义表示法Word文档格式.docx

《全五种Python 转义表示法Word文档格式.docx》由会员分享,可在线阅读,更多相关《全五种Python 转义表示法Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。

全五种Python 转义表示法Word文档格式.docx

那个 

\013 

又是什么意思呢?

∙\ 

是转义符号,上面已经说过

∙013 

是ASCII编码的八进制表示,注意前面是 

且不可省略,而不是字母 

o

把八进制的13转成10进制后是11

对照查看ASCII码表,11对应的是一个垂直定位符号,这就能解释,为什么是阶梯状的输出字符串。

2.转义的5种表示法

ASCII有128个字符,如果用八进制表示,至少得有三位数,才能将其全部表示。

这就是为什么说上面的首位 

不能省略的原因,即使现在用不上,我也得把它空出来。

而如果使用十六进制,只要两位数就其ASCII的字符全部表示出来。

同时为了避免和八进制的混淆起来,所以在 

后面要加上英文字母 

表示十六进制,后面再接两位十六进制的数值。

开头并接三位0-7的数值,表示8进制

∙\x 

开头并接两位0-f的数值,表示16进制

因此,当我定义一个字符串的值为 

hello 

+回车+ 

world 

时,就有了多种方法:

#第一种方法:

8进制>

hello\012world"

world>

#第二种方法:

16进制>

hello\x0aworld"

通常我们很难记得住一个字符的ASCII编号,即使真记住了,也要去转换成八进制或者16进制,实在是太难了。

因此对于一些常用并且比较特殊字符,我们习惯用另一种类似别名的方式,比如使用 

\n 

表示换行,它与 

\012 

、\x0a 

是等价的。

与此类似的表示法,还有如下这些

于是,要实现 

,就有了第三种方法

#第三种方法:

使用类似别名的方法>

hello\nworld"

到目前为止,我们掌握了三种转义的表示法。

已经非常难得了,让我们的脑洞再大一点吧,接下来再介绍两种。

ASCII码表所能表示字符实在太有限了,想打印一个中文汉字,抱歉,你得借助Unicode码。

Unicode编码由4个16进制数值组合而成

print("

\u4E2D"

什么?

我为什么知道 

中 

的unicode是 

\u4E2D?

像下面这样打印就知道啦

#Python2.7>

a=u"

中"

au'

\u4e2d'

由此,要实现 

,就有了第四种方法。

#第四种方法:

使用unicode,\u000a表示换行>

print('

hello\u000aworld'

world

看到这里,你是不是以为要结束啦?

不,还没有。

下面还有一种。

Unicode编码其实还可以由8个32进制数值组合而成,为了以前面的区分开来,这里用 

\U 

开头。

#第五种方法:

使用unicode,\U0000000A表示换行>

hello\U0000000Aworld'

好啦,目前我们掌握了五种转义的表示法。

总结一下:

1.\ 

开头并接三位0-7的数值(八进制)---可以表示所有ASCII字符

2.\x 

开头并接两位0-f的数值(十六进制)---可以表示所有ASCII字符

3.\u 

开头并接四位0-f的数值(十六进制)---可以表示所有Unicode字符

4.\U 

开头并接八位0-f的数值(三十二进制))---可以表示所有Unicode字符

5.\ 

开头后接除x、u、U之外的特定字符---仅可表示部分字符

为什么标题说,转义也可以炫技呢?

试想一下,假如你的同事,在打印日志时,使用这种unicode编码,然后你在定位问题的时候使用这个关键词去搜,却发现什么都搜不到?

这就扑街了。

虽然这种行为真的很sb,但在某些人看来也许是非常牛逼的操作呢?

五种转义的表示法到这里就介绍完成,接下来是更多转义相关的内容,也是非常有意思的内容,有兴趣的可以继续往下看。

3.raw字符串

当一个字符串中具有转义的字符时,我们使用print打印后,正常情况下,输出的不是我们原来在字符串中看到的那样子。

那如果我们需要输出 

hello\nworld 

,不希望Python将 

转义成换行符呢?

这种情况下,你可以在定义时将字符串定义成raw字符串,只要在字符串前面加个 

或者 

即可。

print(r"

hello\nworld>

>

print(R"

hello\nworld

然而,不是所有时候都可以加 

的,比如当你的字符串是由某个程序/函数返回给你的,而不是你自己生成的

#假设这个是外来数据,返回"

body=spider()>

print(body)

这个时候打印它,\n 

就是换行打印。

4.使用repr

对于上面那种无法使用 

的情况,可以试一下 

repr 

来解决这个需求:

body=repr(spider())>

print(body)'

hello\nworld'

经过 

函数的处理后,为让print后的结果,接近字符串本身的样子,它实际上做了两件事

1.将 

变为了 

\\

2.在字符串的首尾添加 

'

 

"

你可以在PythonShell下敲入变量回车,就可以能看出端倪。

首尾是添加 

还是 

,取决于你原字符串。

body="

repr(body)"

hello\\nworld'

body='

5.使用string_escape

如果你还在使用Python2,其实还可以使用另一种方法。

那就是使用 

string.encode('

string_escape'

) 

的方法,它同样可以达到 

的效果

"

.encode('

)'

6.查看原生字符串

综上,想查看原生字符串有两种方法:

1.如果你在PythonShell交互模式下,那么敲击变量回车

2.如果不在PythonShell交互模式下,可先使用 

处理一下,再使用print打印

body'

print(repr(body))'

7.恢复转义:

转成原字符串

处理过或者 

\\ 

取消转义过的字符串,有没有办法再回退出去,变成原先的有转义的字符串呢?

答案是:

有。

如果你使用Python2,可以这样:

hello\\nworld"

body.decode('

如果你使用Python3,可以这样:

body'

bytes(body,"

utf-8"

).decode("

unicode_escape"

还要区分Python2和Python3?

太麻烦了吧。

明哥教你用一种可以兼容Python2和Python3的写法。

首先是在Python2中的输出

importcodecs>

codecs.decode(body,'

unicode_escape'

)u'

然后再看看Python3中的输出

importcodecs>

可以看到Pyhton2中的输出有一个 

,而Python3的输出没有了 

u,但无论如何,他们都取消了转义。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1