『无为则无心』Python基础 — 9、Python字符串的编码与转义
提示:上一篇文章中介绍了Python字符串的使用,本篇文章来说说Python字符串的编码与转义。
在此之前,我们先介绍一下在Python中如何查看一个变量的类型。
1、查看变量类型
(1)type( )
函数说明
- 在Python中,
type( )
函数是一个最实用又简单的查看对象数据类型的方法。 type( )
函数是Python的一个内建的函数,调用它就能够得到一个反回值,从而知道想要查询的对像类型信息。type( )
函数的作用:
只有第一个参数时,则返回对象的类型。多个参数以后用到在详细说。type( )
函数的使用方法:type(object)
(2)示例
"""
type()函数用来检查值的类型。
该函数会将检查的结果作为返回值返回,可以通过变量来接收函数的返回值。
注意: type()函数查看的是变量对应空间中存储的值的类型。
"""
a = type('123')
print(a) # <class 'str'>
# 查看我们所学过的数据类型
print(type(1)) # <class 'int'>
print(type(1.5)) # <class 'float'>
print(type(True)) # <class 'bool'>
print(type('hello')) # <class 'str'>
print(type(None)) # <class 'NoneType'>
提示:
type( )
函数的强大功能并非只能用于查看变量类型,以后用到再总结。
2、转义字符
(1)转义字符说明
- 有部分符号在Python中是有特殊含义的,当需要使用符号自身原有的意思时,这时可以通过转义字符表示。
- 转义字符的意义就是避免出现二义性,避免系统识别错误。
(2)示例
# 1、如果字符串内部既包含'又包含"怎么办?
# 可以用转义字符`\`来标识
print("北京的金山上,"光芒"照四方。") # SyntaxError: invalid syntax
# 使用转义字符解决
print("北京的金山上,\"光芒\"照四方。")
# 使用上边说的引号之间的嵌套解决
print('北京的金山上,"光芒"照四方。')
"""
# 2、转义字符`\`可以转义很多字符,
比如`\n`表示换行,
`\t`表示制表符,
字符`\`本身也要转义,所以`\\`表示的字符就是`\`,
"""
# 输出结果:子曰:"学而时习之,\\n乐呵乐呵!"
s = "子曰:\"学而时习之,\\\\n乐呵乐呵!\""
print(s)
(3)常用转义字符对照表
转义字符 | 描述 |
---|---|
\ (在行尾时) |
续行符 |
\\ |
反斜杠符号 |
\' |
单引号 |
\" |
双引号 |
\a |
响铃 |
\b |
退格(Backspace ) |
\e |
转义 |
\000 |
空 |
\n |
换行 |
\v |
纵向制表符 |
\t |
横向制表符,一个tab键(4个空格)的距离 |
\r |
回车 |
\f |
换页 |
\oyy |
八进制数,yy 代表的字符,例如:\o12 代表换行 |
\xyy |
十六进制数,yy 代表的字符,例如:\x0a 代表换行 |
\other |
其它的字符以普通格式输出 |
提示:转义、去转义在线工具:http://www.bejson.com
3、字符编码
字符串有一个比较特殊的问题,就是编码问题。
(1)字符编码介绍
1)字符编码的由来:
因为计算机只能处理二进制数字,也就是0和1。如果要处理文本,就必须先把文本转换为数字才能处理。
由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII
编码,比如大写字母A
的编码是65
,小写字母z
的编码是122
。
但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312
编码,用来把中文编进去。
你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS
里,韩国把韩文编到Euc-kr
里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。
2)Unicode
编码介绍:
如上所述,Unicode
编码应运而生,又称为万国码。Unicode
编码把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode
编码标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode
编码。
3)UTF-8
编码介绍:
然而新的问题又出现了:如果统一成Unicode
编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode
编码比ASCII
编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,本着节约的精神,又出现了把Unicode
编码转化为“可变长编码”的UTF-8
编码。UTF-8
编码把一个Unicode
编码字符根据不同的数字大小编码成1-6个字节【8个比特(bit
)作为一个字节(byte
)】,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符(如果统一标准的话,一个英文字符要补2-3个字节的0),用UTF-8编码就能节省空间。
如下图所示:
因为我们编写的代码文件中,绝大部分都是英文,所以我们常用的编码格式为UTF-8
编码。
UTF-8
编码还有一个额外的好处,就是ASCII
编码实际上可以被看成是UTF-8
编码的一部分,所以,大量只支持ASCII
编码的历史遗留软件可以在UTF-8
编码下继续工作。
(2)Python中的字符编码
Python3的默认编码是UTF-8
编码,可通过如下代码查看。
import sys
# 可查看Python3的默认编码。
print(sys.getdefaultencoding())
# 下面的方式也可以查看
print(sys.stdout.encoding)
Python3中字符编码经常会使用到decode
和encode
函数。特别是在抓取网页中,这两个函数用的熟练非常有好处。
encode
(编码)的作用,使我们看到的直观的字符转换成计算机内的字节形式。decode
(解码)刚好相反,把字节形式的字符转换成我们看的懂的、直观的、“人模人样”的形式。
如下图所示:
(3)编码格式应用于不同场景
数据在内存当中处理时,使用的格式是Unicode
,统一标准。
在硬盘上存储,或者是在网络上传输时,用的是UTF-8
,因为省空间。
参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017075323632896
『无为则无心』Python基础 — 9、Python字符串的编码与转义的更多相关文章
- 『无为则无心』Python基础 — 4、Python代码常用调试工具
目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...
- 『无为则无心』Python基础 — 6、Python的注释
目录 1.注释的作用 2.注释的分类 单行注释 多行注释 3.注释的注意事项 4.什么时候需要使用注释 5.总结 提示:完成了前面的准备工作,之后的文章开始介绍Python的基本语法了. Python ...
- 『无为则无心』Python基础 — 7、Python的变量
目录 1.变量的定义 2.Python变量说明 3.Python中定义变量 (1)定义语法 (2)标识符定义规则 (3)内置关键字 (4)标识符命名习惯 4.使用变量 1.变量的定义 程序中,数据都是 ...
- 『无为则无心』Python基础 — 10、Python字符串的格式化输出
目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...
- 『无为则无心』Python基础 — 12、Python运算符详细介绍
目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...
- 『无为则无心』Python序列 — 24、Python序列的推导式
目录 1.列表推导式 (1)快速体验 (2)带if的列表推导式 (3)多个for循环实现列表推导式 2.字典推导式 (1)创建一个字典 (2)将两个列表合并为一个字典 (3)提取字典中目标数据 3.集 ...
- 『无为则无心』Python函数 — 29、Python变量和参数传递
目录 1.Python的变量 (1)Python变量不能独立存在 (2)变量是内存中数据的引用 (3)注意点 2.了解变量的引用 3.Python的参数传递(重点) (1)示例 (2)结论 (3)总结 ...
- 『无为则无心』Python基础 — 8、Python中的数据类型(数值、布尔、字符串)
目录 1.数据类型介绍 2.数值型(Number) 3.布尔型(bool) 4.None(空值) 5.常量 6.字符串(String) 1.数据类型介绍 (1)什么是数据类型 在生活中,我们日常使用的 ...
- 『无为则无心』Python基础 — 14、Python流程控制语句(while循环语句)
目录 1.什么是循环结构 2.while循环 (1)while循环的语法 (2)while循环的应用 3.while语句的死循环 4.break和continue 5.while循环嵌套 (1)应用场 ...
随机推荐
- MySQL分区表最佳实践
前言: 分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表.但是对于应用程序来讲,分区的表和没有分区的表是一样的.换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整理 ...
- python 键盘中断子线程及graceful exiting方案
最近需要实现一个服务程序的graceful exiting,保证在退出前关闭所有已创建的子线程 python借助KeyboardInterrupted异常响应键盘中断,因此首先尝试在子线程中try-c ...
- 『政善治』Postman工具 — 12、Postman中实现数据驱动
目录 1.什么是数据驱动? 2.测试集说明 3.创建请求与准备数据文件 (1)新增学院结果文档内容如下 (2)编写数据文件 (3)在Postman中创建请求 4.实现Postman中的数据驱动 步骤1 ...
- SSM框架整合(Spring+SpringMVC+Mybatis)
第一步:创建maven项目并完善项目结构 第二步:相关配置 pom.xml 引入相关jar包 1 <properties> 2 <project.build.sourceEncod ...
- [笔记] c和指针
1.简介 2.基本概念 3.指针 计算机内存的最小单位是位(bit),每个位可以容纳值0或1,单独的位用处不大,通常许多位合成一组作为一个单位,以存储较大范围的值 每个字节包含8位,可以存储无符号值0 ...
- hive beeline详解
Hive客户端工具后续将使用Beeline 替代HiveCLI ,并且后续版本也会废弃掉HiveCLI 客户端工具,Beeline是 Hive 0.11版本引入的新命令行客户端工具,它是基于SQLLi ...
- 详解Linux中的cat文本输出命令用法
作系统 > LINUX > 详解Linux中的cat文本输出命令用法 Linux命令手册 发布时间:2016-01-14 14:14:35 作者:张映 我要评论 这篇 ...
- SecureCRT自动保存日志设置
SecureCRT自动保存日志设置原创杭州_燕十三 最后发布于2017-03-26 22:00:08 阅读数 24731 收藏展开 嵌入式开发经常由于无法debug而只能使用串口打印日志的方式调试代码 ...
- mysql基础之mysql主从架构
一.概念 主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建 二 ...
- 【JVM进阶之路】十三:类加载过程
通过前面的学习,我们了解了Class文件的结构,在Class文件中描述的各类信息,最终都需要加载到虚拟机中之后才能被运行和使用. 接下来,我们开始学习JVM的类加载. 一个类从被加载到虚拟机内存中开始 ...