• python学习Day7 数据类型的转换,字符编码演变历程


    一、数据类型的转换

          1.1.1.字符转列表:lst1 = str.split(默认空格,也可依据指定字符分界),若无分界字符,就没法拆分,这时可以直接放进list转成列表
                    ----> s1 = 'a b c 1 2 3 呵 呵' s2 = s1.split() # ['a', 'b', 'c', '1', '2', '3', '呵', '呵']               

      1.1.2.列表转字符串 :指定字符" ".join(列表)合并为字符字符串

      1.1.3.字符串转字典:先转列表,依据具体需求结合for循环遍历元素,解压赋值,"str.split()"、  " ' '.join(列表)" 拿到需要的值,创建字典

      1.1.4.数字转化为字符串:str(所有类型)

      1.1.5.字符串转化数字类型:整型int、小数float、布尔bool、复数complex ------前三者直接转换int(a)、float(a)、bool(a)

            1.判断是否为正整数.isdigit(),若为True,int()

            2.拆分,判断  (索引1号为是否为“-” and 其它位为正整数)   or       ----------------------------     -3

                      (索引1号为是否为“.” and 其它位为正整数)   or       ----------------------------     .15

                      (索引1号为是否为“-” and 第二位为点 and 其它位为正整数 ) or  ------------------------     -.15

                     ((索引1号为是否为“-” and (其它位为正整数 and 其它位共有一个点))--------------------     -3.15

      1.1.6 list与tuple、set直接相互转化 - 直接 类型()

      1.1.7 map创建一个自定义的字典,通过in成员判定,拿key去映射表拿到对应的值, 举例:汉字转化为数字

    二、字符编码演变历程

         

    数据 从 硬盘 => 内存 => cpu
    # 应用程序打开文本文件的三步骤
    # 1.打开应用程序
    # 2.将数据加载到内存中
    # 3.cpu将内存中的数据直接翻译成字符显示给用户

    # python解释器
    # 1.打开python解释器
    # 2.将数据加载到内存中
    # 3.cpu将内存中的数据解释执行将结果显示给用户,如何解释执行不能通过,将错误信息提供给用户

    # 编码的发展史
    # 电脑只能识别高低电频对应的0,1信息 => 问题:如何将世间万物信息存放到内存中
    # 世间万物信息 => 0,1形式的数据 => 电脑中存放,将该过程逆向操作,就是访问已存储的数据信息

    # 编码表
    # 人能识别的字符 <=> 机器能识别的字符:一定存在一种固定的对应关系
    # 编码表:一定范围内人能识别的字符与机器能识别的字符形成的对应关系表(映射表)

    # 1.ASCII表:英文字母、英文符号、数字与机器能识别的字符的对应关系表,8个二进制位就能存放完这所有的对应关系 => 1字节
    # python2采用的默认编码是ASCII,早期并不支持中文编程
    # 2_1.GBK:中文与与机器能识别的字符的对应关系表(完全兼容ASCII表),16个二进制位能存放所有汉字与ASCII之前的对应关系 => 2个字节
    # 2个字节能否存放常用汉字 => 16个二进制位 2^15
    # print(pow(2, 15))
    # 2_2.Shift_JIS | Euc-kr:日文 | 韩文 与机器能识别的字符的对应关系表(完全兼容ASCII表)

    # 乱码:存的编码格式与取的编码格式不一致
    # 3.Unicode万国码:世间中常用国家的常用字符与机器能识别的字符的对应关系表

    # 转码:Unicode存在汉字与二进制对应关系,GBK也存在汉字与二进制对应关系,将GBK存放的数据转存到Unicode数据

    # 均采用Unicode编码表,只是存放数据采用字节数不一致,utf-8与utf-16是Unicode编码表的两种体现方式
    # utf-8:以1个字节存放英文,以3 | 6个字节存放汉字,在英文数据过多时,更深空间,用来传输效率更高
    # utf-16:所有支持的符号都采用2个字节存放,读存数据采用定长,不用计算,读存效率高

    # 硬盘到内存需要数据的传输,内存到CPU需要数据的传输,所有都采用utf-8
    # 内存需要高速读写,采用utf-16

    # 学习的结晶:编码与解码要统一编码
    # 操作文本字符
    res = "汉字呵呵".encode('utf-8') # 编码:将普通字符串转化为二进制字符串
    print(res) # b'xe6xb1x89xe5xadx97xe5x91xb5xe5x91xb5'

    res = b'xe5x91xb5xe5x91xb5'.decode('GBK') # 解码:将二进制字符串转化为普通字符串
    print(res) # 鍛靛懙 乱码了
    res = b'xe5x91xb5xe5x91xb5'.decode('utf-8')
    print(res) # 呵呵 读写编码统一后就不乱码了

  • 相关阅读:
    获取office版本
    SQL中判断字符串中包含字符的方法
    wpf 多表头
    webservice MaxReceivedMessageSize :已超过传入消息(65536)的最大消息大小配额
    QQ检测登陆及QQ协议
    ssl-openssl简介
    抓包及分析(wireshark&tcpdump)
    Git的一些东西(后续补充)
    SSH实现隧道功能穿墙
    Nmap参考指南(Man Page)
  • 原文地址:https://www.cnblogs.com/qingqinxu/p/10738835.html
Copyright © 2020-2023  润新知