zoukankan      html  css  js  c++  java
  • day23 Pyhton学习 昨日回顾.re模块.序列化模块

    一.昨日回顾

    #__file__查看当前文件所在的绝对路径

    #time 时间模块

      time.time 获取当前时间戳时间

      字符串->time.strptime->结构化->mktime->时间戳

      时间戳->gmtime.localtime->结构化->strftime->字符串(格式化)

    #random 随机数模块

      random.randint() 随机整数

      random.randrange() 可以有步长,顾头不顾尾

      random.choice([]) 随机选择

      random.sample(iterable,n) 从一个可迭代变量中随机取n个值

    #os 和操作系统交互的模块

      os.rename 重命名

      os.remove 删除

      os.mkdir/os.makedirs 创建单层目录/创建多级目录

      os.rmdir/os.removedirs 删除单层目录/多层目录

      os.listdir 查看某个路径下的文件夹和文件

        os.getcwd 获取当前文件的工作目录:在哪里执行py文件

        os.chdir 修改当前文件的工作目录

        os.stat  获取文件信息

        os.system 运行shell命令,直接显示

        os.popen 运行shell命令,获取执行结果

      os.path.abspath 获取当前文件的规范的绝对路径

      os.path.split 切割为目录 和文件名

        os.path.dirname 目录

        os.path.basename 文件名

      os.path.join('绝对路径','文件夹/文件名')#拼接目录

      os.path.exits 如果path存在返回True,否则返回False

      os.path.isfile 如果path存在是文件返回True,否则返回False

      os.path.isdir 如果path存在是目录返回True,否则返回False

      os.path.getsize 返回文件大小

    sys 和python解释器交互的模块

      sys.argv 不加括号,所以不是方法

          返回一个列表,执行py文件的时候,输入什么argv里就有什么

      sys.path 导入模块的时候的搜索路径

      sys.platform 查看当前的操作系统

      sys.version 查看当前的python版本

    re  正则模块

      正则表达式

        元字符

          w 数字字母下划线

          W 非数字字母下划线

          d 数字

          D 非数字

          s 空白符(空格制表符换行符)

          S 非空白符

           制表符

           换行符

           单词的边界

          . 除了换行符以外的所有

          ^ 以什么开始

          $ 结尾

          [..] 字符组

          [^..]非字符组

          | 或(包含关系中,长的在前面)

          () 分组(在或的两端,在添加量词的时候,findall的时候优先要显示的)

        量词

          {n}

          {n,}

          {n,m}

          ? 0,1

          + 1,~

          * 0,~

    元字符->一个字符匹配

    元字符量词->默认贪婪匹配

    元字符量词?->惰性匹配/非贪婪模式

    转义符 :r'正则'

    re模块

    findall 找所有 返回列表

    search 只找第一个    返回一个变量 .group取值

    match 只找从头开始的第一个  返回一个变量 .group取值

    findall和分组

      优先显示分组内的

      findall(?:正则表达式)-->取消分组的优先显示

    search和分组

      group(n)来获取具体某个分组中的内容

    二.今日内容

      re模块结束

        re模块中的其他方法

        re模块中 分组命名相关的语法

        split():

    import re
    s = 'alex83wusir60yuan25'
    ret = re.split('d+',s)
    print(ret)#['alex', 'wusir', 'yuan', '']
    s = 'alex83wusir60yuan25'
    ret = re.split('(d+)',s)
    print(ret)#['alex', '83', 'wusir', '60', 'yuan', '25', '']
    # s = 'alex83wusir60yuan25'
    # ret  = re.sub('d+','|',s,1)#参数1表示只替换1个
    # print(ret)#alex|wusir60yuan25 # ret = re.subn('d+','|',s)print(ret)#('alex|wusir|yuan|', 3)#
    返回元组(替换的结果,替换了多少次)
    
    
    # 'd+' --> 字节码的过程
    # 在多次执行同一个正则表达式的时候compile事先编译
    # 正则表达式为字节码,效率更高 - 节省时间
    # ret = re.findall('d+','alex83wusir60yuan25')
    # print(ret)
    
    # ret = re.compile('d+')
    # ret2 = ret.findall('alex83wusir60yuan25')
    # print(ret2)
    # 节省空间
    ret = re.finditer('d', 'ds3sy4784a')   #finditer返回一个存放匹配结果的迭代器
    print(ret)  # <callable_iterator object at 0x10195f940>
    print(next(ret).group())  #查看第一个结果
    print(next(ret).group())  #查看第二个结果
    print([i.group() for i in ret])  #查看剩余的左右结果
    # 序列(str)化
    # 什么是序列 : list tuple str
    # 国际化 结果就是国际
    # 单一化 结果就是单一
    # 序列化 结果是序列str
    # json
    # menu = {'key':"value","k":['v']}
    import json
    # 把其他的数据类型 -序列化(dumps)-> 字符串
    # 字符串 -反序列化(loads)-> 把其他的数据类型
    # ret = json.dumps(menu)     # 把其他的数据类型 -序列化(dumps)-> 字符串
    # # print(ret)    # json格式的字符串
    # # print(menu)   # dict
    # with open('file','w',encoding='utf-8') as f:
    #      f.write(ret)
    # with open('file','r',encoding='utf-8') as f:
    #      dic = f.read()
    # print(dic)
    # diccc = json.loads(dic)     # 字符串 -反序列化(loads)-> 把其他的数据类型
    # print(diccc['k'])
    
    # 数据类型 <-转换-> 字符串
    # 1.存储在硬盘上 写的每一个字符必须是字符串/bytes数据类型
    # 2.网络传输的时候 必须传递bytes/字符串数据类型
    
    # menu = {'key':"value","k":{'v',1,2}}   # 不支持集合
    # ret = json.dumps(menu)
    # dic = json.loads(ret)
    
    # menu = {'key':"value","k":(1,2,3)}     # 不支持元组,元组被当成列表来序列化
    # ret = json.dumps(menu)
    # print(ret)
    # dic = json.loads(ret)
    # print(dic)
    
    # menu = {'key':"value",1:'vvv'}         # 字典中的key只能是字符串
    # ret = json.dumps(menu)
    # print(ret)
    # dic = json.loads(ret)
    # print(dic)
    
    # 优缺点:
         # 优: 所有的语言都通用
         # 缺: 能支持的数据类型少 :dict list str 数字
    import json
    # 把其他的数据类型 -序列化(dumps)-> 字符串
    # 字符串 -反序列化(loads)-> 把其他的数据类型
    # ret = json.dumps(menu)     # 把其他的数据类型 -序列化(dumps)-> 字符串
    # # print(ret)    # json格式的字符串
    # # print(menu)   # dict
    # with open('file','w',encoding='utf-8') as f:
    #      f.write(ret)
    # with open('file','r',encoding='utf-8') as f:
    #      dic = f.read()
    # print(dic)
    # diccc = json.loads(dic)     # 字符串 -反序列化(loads)-> 把其他的数据类型
    # print(diccc['k'])
    # dump/load 专门和文件打交道的方法
    import json
    # menu = {'key':"value","k":['v']}
    # f = open('file','a')
    # json.dump(menu,f)
    # f.close()
    
    # f = open('file','r')
    # ret = json.load(f)
    # print(ret,type(ret))
    # f.close()
    import json
    # data = {'username':['李华','二愣子'],'sex':'male','age':16}
    # json_dic2 = json.dumps(menu,sort_keys=True,indent=4,separators=(',',':'),ensure_ascii=False)
    # json_dic2 = json.dumps(menu)
    # print(json_dic2)
    
    # file文件中的所有字符串都必须是""不能是单引号
    # 在json中有一些参数能帮助你整理序列化之后的格式,但是这些内容一般在网络传递和文件存储的过程中并不需要

    序列化模块pickle

    # pickle的优缺点
    # 支持python中的几乎所有数据类型
    # 只支持在python程序之间交换数据

    import pickle
    menu = {'key':"value","k":{'v',1,2}}
    # ret = pickle.dumps(menu)
    # print(type(ret),ret)
    # dic = pickle.loads(ret)
    # print(dic)
    menu = {'key':"value","k":(1,2,3)}
    # ret = pickle.dumps(menu)
    # print(type(ret),ret)
    # dic = pickle.loads(ret)
    # print(dic)
    menu = {'key':"value",1:'vvv'}
    # ret = pickle.dumps(menu)
    # print(type(ret),ret)
    # dic = pickle.loads(ret)
    # print(dic)

    # menu = {'key':"value",1:{1,2,3}}
    # with open('file','wb') as f:
    # pickle.dump(menu,f)

    # with open('file','rb') as f:
    # ret = pickle.load(f)
    # print(ret[1])

    # menu = {'key':"value",1:{1,2,3}}
    # with open('file','wb') as f:
    # pickle.dump(menu,f)
    # pickle.dump(menu,f)
    # pickle.dump(menu,f)
    # pickle.dump(menu,f)
    # pickle.dump(menu,f)
    # pickle.dump(menu,f)
    # pickle.dump(menu,f)
    # pickle.dump(menu,f)

    # with open('file','rb') as f:
    # while True:
    # try:
    # ret = pickle.load(f)
    # print(ret)
    # except EOFError:
    # break

    # json dumps/loads
    # 字符串的json数据 = json.dumps(其他数据类型)
    # 其他数据类型= json.loads(字符串的json数据)

    # pickle dumps/loads dump/load
    # bytes的pickel数据 = pickle.dumps(其他数据类型)
    # 其他数据类型= pickle.loads(bytes的pickel数据)
    # pickle.dump(数据类型,文件句柄) # 这个数据类型被写到文件里了
    # pickle.load(文件句柄) # 这个文件里的数据类型
    # 基础数据类型
    # tuple
    # list
    # dict
    
    # list
    # 队列
    # 双端队列
    
    # queue 队列 : 特殊的数据类型:放到队列里
    # 先进先出 FIFO
    
    # stack 栈 : 算法里
    # 先进后出
        # 三级菜单
        # 计算文件夹大小
    # 队列
    #
    # 了解 列表的使用注意事项
        # l.insert()
        # l.pop(0)
    # 频繁的对数据类型进行修改 : deque
    
    
    # from collections import Counter
    # c = Counter('abcdeabcdabcaba')
    # print(c)
  • 相关阅读:
    TCP协议的三次握手、四次挥手
    .NET Framework 3.5 安装
    grep命令总结
    线性回归
    K-Mean聚类算法
    Logistic回归
    朴素贝叶斯
    Decision Tree
    KNN
    GCC for Win32开发环境介绍
  • 原文地址:https://www.cnblogs.com/pythonz/p/9963535.html
Copyright © 2011-2022 走看看