gb2312编码在线转换_python基础学习—04字符串与编码

点击上方蓝字关注我们不迷路!

b212acd384f6c5bf2c50598bbc62d339.png

字符串与编码

一、了解计算机编码

1.1  编码

定义:将信息从一种形式转换为另外一种形式的过程叫做编码,即信息转换过程

举例:信息加密解密、语言翻译

1.2  计算机编码

定义:将计算机可读信息转换为人类可读形式的过程叫做计算机编码。

注:计算机只能读取二进制数据0/1,又称机器码。

举例:将机器码转换为人类可读信息,如:图像、文字、音频、视频等。

二、常见编码

2.1  ASCII码

中文名:美国信息交换标准码

英文名:American Standard Code for Information Interchange

基本简介:ASCII码是最早的计算机编码,主要用于表示英文字符、数字和一些标点符号

下面是ASCII表:

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

ASCII值

0

NUT

32

(space)

64

@

96

1

SOH

33

!

65

A

97

2

STX

34

"

66

B

98

3

ETX

35

#

67

C

99

4

EOT

36

$

68

D

100

5

ENQ

37

%

69

E

101

6

ACK

38

&

70

F

102

7

BEL

39

,

71

G

103

8

BS

40

(

72

H

104

9

HT

41

)

73

I

105

10

LF

42

*

74

J

106

11

VT

43

+

75

K

107

12

FF

44

,

76

L

108

13

CR

45

-

77

M

109

14

SO

46

.

78

N

110

15

SI

47

/

79

O

111

16

DLE

48

0

80

P

112

17

DCI

49

1

81

Q

113

18

DC2

50

2

82

R

114

19

DC3

51

3

83

S

115

20

DC4

52

4

84

T

116

21

NAK

53

5

85

U

117

22

SYN

54

6

86

V

118

23

TB

55

7

87

W

119

24

CAN

56

8

88

X

120

25

EM

57

9

89

Y

121

26

SUB

58

:

90

Z

122

27

ESC

59

;

91

[

123

28

FS

60

<

92

/

124

29

GS

61

=

93

]

125

30

RS

62

>

94

^

126

31

US

63

?

95

_

127

2.2  GB2312

中文名:信息交换用汉字编码字符集

简介:由中国国家标准总局发布的GB2312专用于表示中文信息,GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。GB 2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。

2.3  Unicode

英文名:Unicode

中文名:统一码

别名:万国码、单一码

简介:Unicode码为每种语言中的每个字符设定了统一且唯一的二进制编码,统一了不同国家的编码,表示不同国家的文字;UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。

例如:“汉字”对应的数字是0x6c49和0x5b57

2.4  UTF8

中文名:utf8_encode

简介:Unicode码实际上是一个字符集,它只规定了二进制与各个字符之间的对应关系,并没有规定如何在磁盘上存储。字节是计算机存储的最小单位,具体换算如下:

# 1024字节 为 1 K# 1024 K   为 1 M# 1024 M   为 1 G

UTF32是Unicode 码 的一种实现,一般用4个字节表示一个字符,而一个英文字符只需要1个字节,一个常用汉字需要2个字节,这样比较浪费存储空间。故为了节省存储空间,UTF8 一般用1 到4 个字节表示一个字符,比如:英文字符用1 个字节,常用汉字用2 个字节。

注意:UTF8 是Unicode 码的一种常用实现方式,UTF8使用变长字节来表示字符,即使用的字节数是可变的。

三、python源文件编码

3.1  python2.x

在python2.x中,python源文件默认使用ASCII码格式编码,因此默认情况下是不支持中文的。如果强制输出中文编译会报错,这时如果想在python2.x源文件代码中输入中文符,需要使用UTF-8编码,在源文件开头处添加:

#-*- coding: UTF-8 -*-

或者

#coding: utf-8

3.2  python3.x

在python3.x中,python源代码文件默认统一使用Unicode编码,默认以UTF-8格式编码,就可以直接输出中文字符,不需要在源文件开头添加上述代码。

四、python3字符串与编码

4.1  str 类型

Python3中的字符串类型str'>统一采用Unicode编码,因此可以使用各种字符,示例代码如下:

>>>print(' 覃原 ')  #中文覃原>>>print(' qinyuan ')  #英文qinyuan

4.2  bytes类型

当str类型需要磁盘存储或网络传输时,需要将其转换为bytes类型。同时需要注意bytes是一个二进制类型,需要在str之前加上一个b,示例程序如下:

>>>type(b'qinyuan')  # 注意这里type()函数的作用是判断数据类型<class 'bytes'>

注意:bytes中只能包含ASCII字符,若包含其他字符就会报错,如下:

>>>name = b' 覃原 'SyntaxError: bytes can only contain ASCII literal characters.

4.3  str转为bytes

str类型转换为bytes类型,需要使用str中的encode方法,参数utf8是编码格式,示例代码如下:

>>>name = ' 覃原 '>>>name.encode(' utf8 ')b'\xe8\xa6\x83\xe5\x8e\x9f'

4.4  bytes转为str

bytes类型转换为str类型,需要使用bytes中的decode方法,参数utf8是编码格式,示例代码如下:

>>>utf = b'\xe8\xa6\x83\xe5\x8e\x9f'>>>utf.decode(' utf8 ')' 覃原 '

注意:str与bytes类型转换时使用utf8编码

4.5  str与Unicode互转

将str转为Unicode,其中参数unicode-escape是编码格式,示例代码如下:

>>>'覃原'.encode('unicode-escape')b'\\u8983\\u539f'

将Unicode转为str,示例代码如下:

>>>b'\\u8983\\u539f'.decode('unicode-escape')'覃原'

五、字符串格式化

5.1  %运算符——格式化输出

格式符号

转换

%s

字符串

%d

有符号的十进制整数

%f

浮点数

%c

字符

%u

无符号十进制整数

%o

八进制整数

%x

十六进制整数(小写ox)

%X

十六进制整数(大写OX)

%e

科学计数法(小写’e’)

%E

科学计数法(大写’E’)

%g

%f和%e的简写

%G

%f和%E的简写

示例程序:

>>>age = 21>>>name = ' 覃原 '>>>weight= 60.50>>>student_id=1>>>print(' 我的名字是%s ' % name)>>>print(' 我的学号是%04d ' % student_id)>>>print(' 我的年龄是%d ' % age)>>>print(' 我的体重是%.2f公斤' % weight)>>>print(' 我的学号是%04d,名字%s,年龄%d,体重%.2f' % (student_id,name,age,weight))我的学号是0001,名字覃原,年龄21,体重60.50

注意:(1) %04d,表示输出的整数显示位数,不足以0补全,超出当前位数则原样输出。

(2)%.2f,表示小数点后显示的小数位数。

(3)可以采用%s输出所有类型的数据,%s会将所有数据转换为字符串

(4)%%可以输出为%,不转义%

5.2  format( )函数

format()用于字符串格式化,功能非常强大,格式是str.format(),format函数可以接受不限个参数,位置可以不按顺序,示例代码如下:

>>>print(' 我的学号是{0:04d},名字{1},年龄{2},体重{3:.2f}'.format (student_id,name,age,weight))我的学号是0001,名字覃原,年龄21,体重60.50

5.3  f-格式化字符串

f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它不仅更易读,更简洁,不易出错,而且速度更快,其格式为:f '{表达式}',示例代码如下:

>>>print(f '我的学号是{student_id:04d},名字{name},年龄{age},体重{weight:.2f}')我的学号是0001,名字覃原,年龄21,体重60.50

函数扩展

1.ord( ): 获取一个字符的十进制,示例程序:

>>>ord('覃')35203

2.chr( ): 将十进制数字转为字符,示例程序:

>>>chr(35203)覃

3.str( ): 将非字符串值转换为字符串,示例程序:

>>>age = 21  #这里age为int型21>>>str(age)  #即转换为字符串'21'

4.len( ): 计算str的字符数,如果换成bytes,就是计算字节数,示例程序:

>>>len('QIN')3>>>len('覃原')2>>>len(b'\xe8\xa6\x83\xe5\x8e\x9f')6>>>len('覃原'.encode('utf-8'))6

5.type( ): 判断数据类型,示例程序:

>>> type('覃原')

↓↓↓

练习

小覃的成绩从去年的80分提升到了今年的90分,请计算小明成绩提升的百分点,并分别使用三种字符串格式化方法显示出 ' xx.xx% ',保留两位小数即可。

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

25外观模式(Facade Pattern)

动机(Motivate): 在软件开发系统中&#xff0c;客户程序经常会与复杂系统的内部子系统之间产生耦合&#xff0c;而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口&#xff1f;如何将复杂系统的内部子系统与客户程序之间的依赖解耦&#…

mysql mybatis类型对应_Mybatis与数据库的类型对应

Mybatis与数据库的类型对应由于业务的改变&#xff0c;在首次存入数据库时某些int属性并没有赋值&#xff0c;于是默认值就开始污染数据库了。java实体属性对应mysql和SQL Server 和Oracle 数据类型对应1&#xff1a;Java数据类型与MySql数据类型对照表*对于bolb&#xff0c;一…

26享元模式(Flyweight Pattern)

面向对象的代价 面向对象很好地解决了系统抽象性的问题&#xff0c;同时在大多数情况下&#xff0c;也不会损及系统的性能。但是&#xff0c;在 某些特殊的应用中下&#xff0c;由于对象的数量太大&#xff0c;采用面向对象会给系统带来难以承受的内存开销。比如: 图形应用…

mysql一个事务多个log_MySQL识别一个binlog中的一个事物

MySQL测试版本5.7.14设置GTID_MODEONON(3): Both new and replicated transactions must be GTID transactions(生成的是GTID事物&#xff0c;slave也只能应用GTID事物)设置binlog格式为row模式做如下操作mysql> insert into test values(1,2);Query OK, 1 row affected (0.…

go for 循环遍历数组并排序_10. Go语言流程控制:for 循环

本文原文&#xff1a;http://golang.iswbm.comGithub&#xff1a;http://github.com/iswbm/GolangCodingTimeGo里的流程控制方法还是挺丰富&#xff0c;整理了下有如下这么多种&#xff1a;if - else 条件语句switch - case 选择语句for - range 循环语句goto 无条件跳转语句de…

27代理模式(Proxy Pattern)

直接与间接&#xff1a; 人们对复杂的软件系统常有一种处理手法&#xff0c;即增加一层间接层&#xff0c;从而对系统获得一种更为灵活、 满足特定需求的解决方案。 …

31模板方法(Template Method)

无处不在的Template Method 如果你只想掌握一种设计模式&#xff0c;那么它就是Template Method! 动机(Motivate): 变化 -----是软件设计的永恒主题&#xff0c;如何管理变化带来的复杂性&#xff1f;设计模式的艺术性和复杂度就在于如何 分析&#xff0c;并发现系统中…

bat 脚本清空窗口内容_tomcat9.0启动脚本startup.bat的分析

1、 Apache Tomcat的下载和安装从Apache官网https://tomcat.apache.org/可以下载各种版本的tomcat软件&#xff0c;下载的文件格式可以是zip/tar.gz/exe形式的。如下图所示&#xff0c;在64位windows中使用tomcat&#xff0c;我们可以下载"64-bit Windows.zip",直接解…

33迭代器模式(Iterator Pattern)

动机(Motivate): 在软件构建过程中&#xff0c;集合对象内部结构常常变化各异。但对于这些集合对象&#xff0c;我们希望在不暴露其内部结构的同时&#xff0c;可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“ 同一种算法在多种集合对象上进行操作…

32命令模式(Command Pattern)

耦合与变化&#xff1a; 耦合是软件不能抵御变化灾难的根本性原因。不仅实体对象与实体对象之间存在耦合关系&#xff0c;实体对象与行为操作之间也存在耦合关系。 动机(Mot…

34观察者模式(Observer Pattern)

动机(Motivate):在软件构建 过程中&#xff0c;我们需要为某些对象建立一种“通知依赖关系” --------一个对象&#xff08;目标对象&#xff09;的状态发生改变&#xff0c;所有的依赖对象&#xff08;观察者对象&#xff09;都将得到通知。如果这样的依赖关系过于紧密&#x…

36中介者模式(Mediator Pattern)

依赖关系的转化: 动机(Motivate): 在软件构建过程中&#xff0c;经常会出现多个对象互相关联交互的情况&#xff0c;对象之间常常会维持一种复杂的引用关系&#xff0c;如果遇到一些需求的更改&#xff0c;这种直接的引用关系将面临不断的变化。 在这种情况…

相似理论与模型试验_正交实验下的固液耦合相似材料研究

原标题&#xff1a;基于正交试验的固液耦合相似材料研究摘 要:为了研究矿井突水演化规律&#xff0c;通过正交试验研制出一种能同时满足固体力学与水理性的固液 耦合相似材料&#xff0c;该相似材料以河沙为骨料、水泥和大白粉为胶结剂、液体石蜡和淀粉为调节剂。采用 极差分析…

35解释器模式(Interpreter Pattern)

动机(Motivate): 在软件构建过程中&#xff0c;如果某一特定领域的问题比较复杂&#xff0c;类似的模式不断重复出现&#xff0c;如果使用普通的编程方式来实现将面临非常频繁的变化。 在这种情况下&#xff0c;将特定领域的问题表达为某种文法规则下的句子&#xff0c;…

37职责链模式(Chain of Responsibility Pattern)

动机(Motivate)&#xff1a; 在软件构建过程中&#xff0c;一个请求可能被多个对象处理&#xff0c;但是每个请求在运行时只能有一个接受者&#xff0c;如果显示指定&#xff0c;将必不可少地带来请求发送者与接受者的紧耦合。 如何使请求的发送者不需要指定具体的接受…

python3中format函数列表_Python3之字符串格式化format函数详解(上)

173.jpg概述在Python3中&#xff0c;字符串格式化操作通过format()方法或者fstring实现。而相比于老版的字符串格式化方式&#xff0c;format()方法拥有更多的功能&#xff0c;操作起来更加方便&#xff0c;可读性也更强。该函数将字符串当成一个模板&#xff0c;通过传入的参数…

38备忘录模式(Memento Pattern)

对象状态的回溯&#xff1a; 对象状态的变化无端&#xff0c;如何回溯/恢复对象在某个点的状态&#xff1f; 动机&#xff1a; 在软件构建过程中&#xff0c;某些对象的状态在转换过程中&#xff0c;可能由于某种需要&#xff0c;要求程序能够…

39策略模式(Strategy Pattern)

算法与对象的耦合&#xff1a; 对象可能经常需要使用多种不同的算法&#xff0c;但是如果变化频繁&#xff0c;会将类型变得脆弱... 动机&#xff1a; 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多样&#xff0c;经常改变&#xff0c;如果将…

40访问者模式(Visitor Pattern)

类层次结构的变化&#xff1a; 类层次结构中可能经常由于引入新的操作&#xff0c;从而将类型变得脆弱... 动机&#xff1a; 在软件构建过程中&#xff0c;由于需求的改变&#xff0c;某些类层次结构中常常需要增加新的行为(方法),如果直接…

41状态模式(State Pattern)

对象状态影响对象行为&#xff1a; 对象拥有不同的状态&#xff0c;往往会行使不同的行为... 动机&#xff1a; 在软件构建过程中&#xff0c;某些对象的状态如果改变以及其行为也会随之而发生变化&#xff0c;比如文档处于只读状态&#xff0c;其支…