zoukankan      html  css  js  c++  java
  • python第七天

    今日所学:

                  1、字符编码

                  2、字符与字节

                  3、文件操作

        字符编码的重点是:

              1)什么是字符编码:将人识别的字符转换成计算机能识别的01,转换的规则就是字符编码表

             2)常用的编码表:ascii、unicode、GBK、shift_jis、EUC_kr

             3)编码操作:编码encode(),解码decode()

        知识储备:

              1.电脑的三大核心:CPU--内存--硬盘(数据的存取过程

              2.软件及python解释器读取文件的过程:启动--读取--展示|解释执行

              3.python2环境的文件头:coding:编码格式     

         简介与发展:

              1.ascii--各国编码--万国编码

              2.存取不一致的乱码现象

              3.unicode与utf-8

           核心:

                   编码操作:编码encode()、解码decode()

      字符字节的重点是:

              1)字节存储的方式:8个二进制位

              2)字符所占字节数:根据编码的不同,所占字节数可能不同

             3)三种格式字符串:u"、b"、r"

      文件操作的重点是:

            1)文件操作的三步骤:打开文件--使用文件--关闭文件

            2)文件操作的三要素:文件源,操作模式,编码

            3)with语法:with open(...) as 别名,...,open(...) as 别名:pass

           4)重点方法:read()|write()|readline()|close()|f.flush()|f.seek

       操作模式:

                    主模式:r|w|a

                   从模式:b|t|+

                   了解:x|u

       操作方法:

                 读:read()| readline()| readlines()

                 写:write()| writelines() |flush()

                 光标:seek() | tell()

                 特征:encoding | closed

           了解:readable()| writetable() |name

      

    类型专业:

    # 1.哪些类型可以转化为数字
    res = int('10')
    print(res)
    res = int('-3')
    print(res)
    res = float('.15')
    print(res)
    res = float('-.15')
    print(res)
    res = float('-3.15')
    print(res)
    # 作业:判断所有能被转换为数字类型的字符串,并转化

    # 2.数字转化字符串
    print(str(10))

    # 3.字符串与列表相互转换 ******
    s = 'abc123呵呵'
    print(list(s)) # ['a', 'b', 'c', '1', '2', '3', '呵', '呵'] 没有对应的 str(ls)
    ls = ['a', 'b', 'c', '1', '2', '3', '呵', '呵']
    n_s = ''.join(ls)
    print(n_s) # 'abc123呵呵'

    # s1 = 'a b c 1 2 3 呵 呵'
    # res = s1.split() # 默认按空格拆
    s1 = 'a b c 1 2 3 呵 呵'
    res = s1.split()
    print(res)

    # 必须掌握
    s2 = 'ie=UTF-8&wd=你好帅'
    res = s2.split('&')
    print(res) # ['ie=UTF-8', 'wd=你好帅']

    ls2 = ['ie=UTF-8', 'wd=你好帅']
    n_s2 = '@'.join(ls2)
    print(n_s2) # ie=UTF-8@wd=你好帅

    # 4.需求:"ie=UTF-8&wd=你好帅" => [('ie', 'UTF-8'), ('wd', '你好帅')]
    res = []
    s4 = "ie=UTF-8&wd=你好帅"
    ls4 = s4.split('&') # ['ie=UTF-8', 'wd=你好帅']
    for ele in ls4: # v = ie=UTF-8 | wd=你好帅
    k, v = ele.split('=') # k: ie v: UTF-8
    res.append((k, v))
    print(res)

    # 5.需求:"ie=UTF-8&wd=你好帅" => {'ie': 'UTF-8', 'wd': '你好帅'}
    res = {}
    s5 = "ie=UTF-8&wd=你好帅"
    ls5 = s5.split('&') # ['ie=UTF-8', 'wd=你好帅']
    for ele in ls5: # v = ie=UTF-8 | wd=你好帅
    k, v = ele.split('=') # k: ie v: UTF-8
    res[k] = v
    print(res)

    # 6.需求:[('ie', 'UTF-8'), ('wd', '你好帅')] => {'ie': 'UTF-8', 'wd': '你好帅'}
    res = {}
    ls6 = [('ie', 'UTF-8'), ('wd', '你好帅')]
    for k, v in ls6:
    res[k] = v
    print(res)

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

    # 8.需求:将汉字转化为数字
    # 将 壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟
    # 转化为 1、2、3、4、5、6、7、8、9、10、100、100
    # 作业:壹仟捌佰玖拾叁 => 1893

    num_map = {
    '壹': 1,
    '贰': 2,
    '仟': 1000
    }
    ls8 = ['贰', '壹', '仟']
    res = []
    for v in ls8:
    num = num_map[v] # 通过key去映射表拿到对应的值,完成 '贰' => 2
    res.append(num)
    print(res)

    字符编码:

    # 数据 从 硬盘 => 内存 => 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) # 呵呵 读写编码统一后就不乱码了

  • 相关阅读:
    关于 Wordpress安装时出现“Warning: Cannot modify header information – headers already sent by….”
    C#、.Net经典面试题集锦(二)
    .net 中的事务总结
    什么是webservice
    Web Service与 .NET Remoting
    动态语句exec与sp_executesql执行计划区别
    SQL2005以上版本派生表更新
    清理sql server 2005 服务器名称列表
    如何卸载VS2008
    [怎樣處理]SQL2008、SQL2005類型判斷出錯
  • 原文地址:https://www.cnblogs.com/niubikuang/p/10738728.html
Copyright © 2011-2022 走看看