python-(4-5)数据类型的应用(字符集、编码和运算符)

一. 字符集和编码

1. 概念定义

ASCII:8bit 1byte 编排了128个文字符号,只需要7个0或1,但防止不够,多加一位,即8bit
gbk:16bit 2byte Windows默认
unicode:32bit 4byte(万国码,没法使用,只是一个标准)
utf-8:Mac和Linux默认
—英文:8bit 1byte
—欧洲:16bit 2byte
—中文:24bit 3byte

gbk源自于ANSI(一套标准,16bit 2byte,美国人制定,其他人自己添加,源自于ASCII)
utf-8源自于unicode
二者来自不同标准,不能直接转化
gbk(我军密码本)—> 文字 —> utf-8(敌军密码本)

2. 编码和解码

程序员平时遇见的所有数据最终单位都是字节byte

1. 对字符进行编码

下面以示例说明,字符串分别用gbk和utf-8表示的字节数。

执行下面代码,用gbk来对“刘德华”编码,将文字表示成字节的形式

s = "刘德华"
bs1 = s.encode("gbk")
print(bs1)

执行结果如下:

b'\xc1\xf5\xb5\xc2\xbb\xaa'

每一个反斜杠及其后面的内容表示一个字节bye,所以“刘德华”三个汉字用gbk编码是6个字节。
这与上述gbk编码所长字节长度定义相符合(一个字符是2byte的长度)。

同理,用utf-8编码如下图所示:

在这里插入图片描述

utf-8的中文字符每个字符占3个byte长度,因此“刘德华”总共为9个字节

2. 将gbk的字节转化成utf-8的字节

首先,得到gbk的编码

bs_gbk = b'\xc1\xf5\xb5\xc2\xbb\xaa'

其次,用gbk解码,将其变成文字符号(即字符串"刘德华“)

str = bs_gbk.decode("gbk")

最后,将得到的字符串用utf-8重新编码,并打印结果

bs_utf8 = str.encode("utf-8")
print(bs_utf8)

就可以得到b'\xe5\x88\x98\xe5\xbe\xb7\xe5\x8d\x8e'

总结:

str.encode("编码方式")  #编码
bytes.decode("解码方式") #解码

3. 补充说明

如果是中英文混在一起进行编码

在这里插入图片描述

utf-8的中文一个字符站3个字节,都没问题。
而abc是英文,占一个字节,也就是ASCII码,可以正常显示
所以,英文原来是什么,编码也还是什么,gbk也同样如此。ASCII的标准在哪里都适用。

二. 运算符

1. 算术运算

在这里插入图片描述

2. 比较运算

大于、大于等于、小于、小于等于、等于、不等于六种关系
在这里插入图片描述

3. 赋值运算

需求:a=100 b=20 将a和b的数值进行互换
方法一:(仅适用于python)

a = 100
b = 20
a, b = b, a  # 等号右边的是一个元组,在python可以解构
print(a)
print(b)

方法二:

a = 100
b = 20

# 将a的值存储在一个变量tmp中
tmp = a

# 将b的值赋给a,此时a是20,b也是20
a = b

# 将tmp(100)的值赋给b,此时b是100
b = tmp

# 打印结果
print(a)
print(b)

4. 逻辑运算

and 左右两端都是真,结果才是真
or 左右两端最少有一个为真,结果才是真
not 非真即假,非假即真
当三者同时出现时,最好加上括号
如果没有括号,运算级别括号 > not > and > or

5. 成员运算

xxx在xxx中出现了,为真in
xxx不在xxx中出现了,为真not in

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值