• 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)
    
    • 1
    • 2
    • 3

    执行结果如下:

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

    每一个反斜杠及其后面的内容表示一个字节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'
    
    • 1

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

    str = bs_gbk.decode("gbk")
    
    • 1

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

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

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

    总结:

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

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    方法二:

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4. 逻辑运算

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

    5. 成员运算

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

  • 相关阅读:
    Java并发编程学习7-阻塞队列
    Max Sum Plus Plus HDU - 1024
    H3C mstp+vrrp实验 新华三杯拆解
    APP逆向案例之(一)过 app 更新提示
    shiro会话管理
    Android WMS——概述(一)
    .Net DI(Dependency Injection)依赖注入机制
    [T3N4CI0US 2022] 一个韩国比赛
    猿创征文|HCIE-Security Day55:反病毒技术
    FFplay文档解读-43-视频过滤器十八
  • 原文地址:https://blog.csdn.net/oldboy1999/article/details/126691450