zoukankan      html  css  js  c++  java
  • python的一些内置模块

    整理了几种python的常用内置模块. 

     内置函数思维导图:https://www.processon.com/view/link/5c7902b1e4b0168e4200846a

    re模块

    re(regular expression)就是正则表达式英文的缩写,也就是说python利用正则进行一些查找,替换等工作。

    re模块的方法:

      查找

      findall,匹配所有,每一项都是列表中的一个元素,从大段地内容中找出匹配的项,常用指数5星,缺点是提取出来的数据量如果过大不能及时处理的话,浪费内存。

    import re
    ret = re.findall("d+","sajdaijdi123124sad12")
    print(ret)    #['123124', '12']

     search 主要用于表单验证,返回的是一个正则匹配的结果,只匹配从左到右的第一个。
    import re
    ret = re.search("d+","sajdaijdi123124yfcy23423")
    print(ret.group())  #123124

      group的功能是把匹配结果显示出来,如果匹配失败,print(ret)是none,故group(ret)会报错.

      

      match  从开头匹配,成功则返回,不成功返回none

    import re
    ret = re.search("[^d]+","sjdakjdk123124")
    print(ret.group())  #sjdakjdk

      替换

      sub(正则,要替换的,实施的字符串,替换次数)

      subn()功能和sub没太大区别 ,就是能返回替换次数.

    import re
    s = "我很2,你也很2"
    ret = re.sub("d","帅",s,1)    #如果不写次数,默认全部
    print(ret)    #我很帅,你也很2

      分割

      split, 和字符串时候使用的方法差不多.注意 被切割的地方会消失不见.

    import re
    s = "小刘和兄贵1小李和小梅"
    ret = re.split("d",s)5[
    print(ret)    #['小刘和兄贵', '小李和小梅']

      进阶之compile

      把正则表达式进行预编译,节省时间

    import re
    ret = re.compile("d+")
    res = ret.findall("jksajd123")
    print(res)    #["123"]

      进阶之finditer

      返回迭代器,可以通过for循环读取数据,节省空间.

    import re
    ret = re.finditer("d+","sajdkajd123")
    for i in ret:
        print(i.group())    #123

      在re中正则表达式的分组的使用

    例如:在"<a>wuyuetian</a>"中取出"wuyuetian"

    #在findall里,为了findall也能顺利取到分组中的内容,用()会优先取括号内的内容
    import re
    s = "<a>wuyuetian</a>"
    ret = re.findall(">(w+)<",s)
    print(ret)
    #分组的序号规则类似于索引,但是记着是从1开始的
    s = "<a>wuyuetian</a>"
    ret = re.search("(>)(w+)(<)",s)
    print(ret.group(2))    #wuyuetian

    关于分组命名

      ?P<name>xxx

    s = "<a>wuyuetian</a>"
    ret = re.search(">(?<contrnt>w)<",s)
    print(ret.group(content)

    time模块

      time模块顾名思义,就是和时间相关的模块.

      在python中时间分为以下几种:

        1,格式化字符串类型时间 :  2018-08-20 或 2018.8.20等

        2,结构化时间 : 元组类型  型如:time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=15, tm_min=11, tm_sec=34, tm_wday=0, tm_yday=232, tm_isdst=0)

           3,时间戳 , 指的是一个浮点型数字,它代表了从伦敦时间1970年1月1日到现在经历了多少秒.

    #结构化时间
    print(time.localtime())    #time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=19, tm_min=11, tm_sec=34, tm_wday=0, tm_yday=232, tm_isdst=0)
    print(time.localtime().tm_mon)    #8
    
    #格式化时间
    print(time.strftime('%Y-%m-%d %H:%M:%S'))    #2018-08-20 19:18:01
    
    #时间戳
    print(time.time())    #1534749546.5685184
    print

      time模块补充  

    上文提到的三种时间表示类型之间能够相互转换.

        time.strptime()   ==>   time.mktime()

    格式化时间      结构化时间        时间戳

        time.strftime()    <== time.localtime()

    结构化时间作为枢纽的存在,实现时间表现类型的相互转换.

    random模块

     random是随机数模块,比较简单,方法也比较少.

    random.randint()      取随机整数,包括左右边界

    random.randrange()     取随机整数,不包括右边界.  #既然是range  那肯定还有步长,左右的参数.

    random.random()       取随机小数,0-1之间的小数

    random.uniform()    取随机小数,以传入参数为范围

    random.shuffle()     打乱传入的容器的内部顺序并返回

    random.sample()    随机返回传入容器内的元素,可以修改参数修改随机的个数.

    random.choice()     随机返回

    import random
    
    print(random.random())    #0.626381041530784
    
    print(random.randint(1,2))    #1或2 #注意: 这里必须要传参数
    
    print(random.randrange(1,5,2))    #1或3    这里的randrange可以当成range理解
    
    print(random.uniform(1,2))    #1.7422664388978308
    
    lst = [1,2,3,4]
    random.shuffle(l)    #[3,1,4,2]    #注意:这里是列表的顺序被打乱,打印lst才有结果
    
    print(random.sample("1234",3))    #这里的第一个参数可以传多种容器类的数据类型,第二个参数代表了随机取出几个数
    
    print(random.choice("123456"))    #随机选择一个 返回,参数和sample的第一个参数性质一样

    sys模块

    sys模块是和python解释器进行交互的接口,较为容易理解.

    sys.argv()    这个算是用的比较多的一个方法了,list,返回的第一个元素是程序本身的路径,之后的 就是运行程序是输入的内容.多用于用户交互.

    sys.version  返回解释器的版本信息.

    sys.exit()     正确退出exit(0),异常退出exit(1)

    sys.path    返回模块的搜索路径

    sys.modules()   返回我们所导入的模块的内存地址,可以当模块名使用.

     sys.getcheckintval()  查看GIL的切换的指令数.

    sys.setrecursionlimit()  查看并能更改递归的最大次数.

    sys.studin()  获取标准输入

    sys.studout  获取标准输出

    import  sys
    a = sys.argv(1)
    if a =="有点小帅":
        print("谢谢")
    #命令行输入  python  (路径) ,"有点小帅"
    #返回 "谢谢"
    
    sys.version    #3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]
    
    sys.path()    #一个路径
    
    print(sys.modules["time"].time())    #1534754176.2376733  没错  返回的是时间戳
    
    
    import sys  #关于exit()异常处理
    try: sys.exit(1) except SystemExit as e: print(e) #1

    getopt模块

    getopt模块大家可能见到的比较少,在网上各式各样的解释也让人眼花缭乱,这里说一下我的理解。

    getopt模块有两个方法,这里主要介绍getopt.getopt()。它的作用其实两个字就能说明:匹配

    getopt.getopt会返回匹配到的命令行参数和参数值组成的元组。

    有三个参数:

      1,命令行参数,我们可以通过sys.argv[1:]来获取,把路径元素跳过。

      2,短参数的匹配规则。短参数就是 -h,-l,-v这种的,加上 `:`就代表":"左右两边的参数有值。

      3,长参数的匹配规则,长参数就是-help,-version,-command这种,加上`=`就代表该参数有值。

    有两个返回值:

      1,匹配到的命令行参数及其值  组成的元组 构成的列表。

      2,未匹配到的命令行参数。

    示例代码:

    输出结果:

    os模块

    os模块是和操作系统相关的一个模块.是和操作系统进行交互的接口.

    os.popen() 和 os.system() 都是执行字符串类型的操作系统命令,可以类比eval和exec这两个内置函数,这两个内置函数是执行字符串类型的python代码

    os.popen()适合做查看类的工作,如查看"cat"

    os.system适合做直接执行不需返回的操作,如删除"rm"

    os.getcwd()        打印当前工作目录

    os.chdir()      切换当前的工作目录

    os.makedirs()     递归创建多个文件夹(空)

    os.removedirs()    递归删除多个文件夹(空)

    os.mkdir()      创建一个文件夹

    os.rmdir()       删除一个文件夹

    os.listdir()       列出指定目录下所有的文件和文件夹

    os.remove()      删除一个文件

    os.rename]()       重命名一个文件

    os.stat()          获取信息  #注:os.stat().st_size获取文件大小

    os.path.abspath()  它有两个功能,把不规范的路径格式修改成操作系统默认的格式

              能够给能够找到的相对路径修改成绝对路径

    os.path.split()   把文件路径分为两段,第二段是一个文件或者文件夹  返回的是一个元组

    os.path.dirname() 返回目录

    os.path.basename   返回文件名  这两个就是os.path.split()的返回值   都是字符串

    os.path.exists()  判断文件或者文件夹是否存在

    os.path.isabs()  判断是否为绝对路径

    os.path.isdir()    判断是否为文件夹

    os.path.isfile()      判断是否为文件

    os.path.join("","")  拼接

    os.path.getatime()  返回文件最后的修改时间

    os.path.getsize()  查看文件的大小

              注意: 所有的文件夹至少是4096个字节,创建文件夹是64个字节无法用python统计一个文件夹中所有文件的大小    

    pickle和json序列化模块

    pickle和json都是具有dump,load,jumps,loads

    都是类型转换,但是json更具有局限性,它不能处理集合,字典的key也必须是字符串,等等

    pickle就没这些局限性,并且json的jump和load不能做到连续多次序列化和反序列化.

    注意 由于pickle返回的结果是字节,在用dump和load进行文件操作时,要用rb和wb模式打开文件.

    uuid模块

      uuid.uuid4()  返回随机的五组由数字和字母组成的UUID类型的语句,如a8d04eea-191a-4cdc-b4de-0c71f9c463cf , 可以被str强转.

    subprocess模块

    subprocess模块主要是用来执行外部命令的模块,

      1,subprocess.call(),执行命令,并返回执行状态,其中shell参数为False时,命令需要通过列表的方式传入,当shell为True时,可直接传入命令。

      2,subprocess.check_call(),增加当返回值不为0时,直接抛出异常。。

      3,subprocess.check_output(),它会做两件事:

        · 检查返回值,如果不为0则代表当前进程执行失败。

        · 返回标准输出结果

  • 相关阅读:
    POJ 2400 Supervisor, Supervisee(KM)
    HDU 1695 GCD (容斥原理+欧拉函数)
    URAL 1244. Gentlemen (DP)
    HDU 1573 X问题 (中国剩余定理)
    ZOJ 3757 Alice and Bob and Cue Sports(模拟)
    HDU 1452 Happy 2004(因子和的积性函数)
    第五届山东省省赛总结
    mybatis错误——java.io.IOException: Could not find resource com/xxx/xxxMapper.xml
    springMVC+spring+mybatis搭建最近
    Log4j配置详解
  • 原文地址:https://www.cnblogs.com/cuiyuanzhang/p/9505591.html
Copyright © 2011-2022 走看看