zoukankan      html  css  js  c++  java
  • Python 3 常用模块

    一、time和datetime模块

    1、time模块

    import time
    print(time.time())  # 从1970年到当前时间的秒数
    print(time.ctime())  # 传入秒数,默认是time.time(),显示参数时间的固定可读形式如:Mon Jun 17 21:39:54 2019
    print(time.clock())  # 可以计算运行程序代码的cpu时间
    time.sleep(0)  # 让程序暂停
    print(time.localtime())  #返回一个当前时区的时间元组
    print(time.gmtime())  # 返回一个世界标准时间的时间元组
    print(time.mktime(time.localtime()))  #将时间元组转化成时间戳
    print(time.strftime("%Y-%m-%d %H-%M-%S", time.localtime()))  # 格式化时间

    问题:在统计程序运行时间时,time.time()和time.clock()的区别?

    2、datetime模块

    import datetime
    print(datetime.datetime.today())  # 当前的日期和时间
    print(datetime.datetime.now())  # 同上
    print(datetime.date.today())  # 今天的日期

    # 对时期加减
    today = datetime.date.today()
    one_day = datetime.timedelta(days=1)
    yesterday = today - one_day

    二、random模块

    import random
    random.random()  # 从0-1的随机小数
    random.uniform(m,n)  # 从m-n的随机小数
    random.randint(m,n)  #从m-n的随机整数,包括m和n
    random.randrange(m,n,s)  # 从m-n指定步长
    
    random.shuffle(l)  # 打乱一个列表
    random.choice(l)  # 从一个序列随机选择一个数
    random.sample(l)  # 随机选取指定个数

    三、sys,os模块

    1、os模块,与操作系统相关

    import os
    os.mkdir(xx)
    os.makedirs(xx/xx/xx)
    os.rmdir(xx)
    os.removedirs(xx/xx/xx)
    
    os.path.join(xx,xx)
    os.path.listdir(xx)  # 返回路径下所有文件名
    os.path.getsize(xx)  # 返回文件大小
    
    os.path.isfile(xx)
    ps.path.isdir(xx)
    ps.path.exists(xx)

    2、sys模块,与python解释器有关

    import sys
    sys.args  # 返回在命令行启动python时传递的参数
    sys.path  # 返回模块搜索路径的字符串列表,import模块时会在这些路径中寻找

    四、pickle和json

    import pickle
    pickle.dumps("xxx")  # 将数据转换成字节
    pickle.loads(xx)  # 将字节转化成python数据
    pickle.dump("xx", open("xx", "wb"))  # 将数据以字节形式写进文件
    pickle.load(open("xx", "rb"))  # 将数据从文件读出来
    
    import json
    json.dumps("xxx")  # 将数据转换成json字符串
    json.loads(xx)  # 将json字符串转化成python数据
    json.dump("xx", open("xx", "w"))  # 将数据以json字符串格式写进文件
    json.load(open("xx", "r"))  # 将数据从文件读出来

    五、hashlib模块

    hashlib采用摘要算法进行加密,对同样的内容,加密结果永远不变,对不同的内容永远不一样。

    hashlib不能解密。

    应用场景:密码的密文存储、文件的一致性验证

    import hashlib
    md = hashlib.md5(b'xx')  # 可以加盐,防止撞库
    md.update(b'xxxxx')  # 必须是bytes类型
    print(md.hexdigest())

    但是这样的加密可能会被撞库破解,所以为了加强密码的安全性,可以为其加盐

    在md = hashlib.md(b'salt'),这样加盐,盐也必须是一个bytes类型。

    六、re模块

    模式描述
    ^ 匹配字符串的开头
    $ 匹配字符串的末尾。
    . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
    [...] 用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'
    [^...] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
    * 匹配0个或多个的表达式。
    + 匹配1个或多个的表达式。
    ? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
    { n} 精确匹配 n 个前面表达式。例如, o{2} 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的两个 o。
    { n,} 匹配 n 个前面表达式。例如, o{2,} 不能匹配"Bob"中的"o",但能匹配 "foooood"中的所有 o。"o{1,}" 等价于 "o+"。"o{0,}" 则等价于 "o*"。
    { n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式
    a| b 匹配a或b
    (re) 匹配括号内的表达式,也表示一个组
       
    w 匹配字母数字及下划线
    W 匹配非字母数字及下划线
    s 匹配任意空白字符,等价于 [ f].
    S 匹配任意非空字符
    d 匹配任意数字,等价于 [0-9].
    D 匹配任意非数字
       
    , , 等. 匹配一个换行符。匹配一个制表符。等
       

    1、正则表达式

    括号相关:[ ],[^... ],( ),{ }

    元字符:d,w,s,D,W,S,|,.,^$

    量词:?+*

    2、re模块用法

    import re
    re.findall(pattern,string)  # 匹配所有符合的结果,返回一个列表
    re.finditer(pattern, string)  # 返回一个迭代器,保存所有符合的结果
    re.search(pattern, string)  # 全文匹配,返回一个对象,只匹配第一个符合的结果
    re.match(pattern, string)  # 匹配开头是否符合结果,返回一个对象,只包含一个结果
    xx.group()  # 上面三个方法返回的对象都可以通过.group()来获取值,如果没有匹配到会报错
    
    re.split(pattern, string)  # 用法和字符串的split一致,返回一个列表
    re.sup(pattern, new, string)  # 用法和字符串的replace一致,返回新的字符串
    re.supn(pattern, new, string)  # 返回一个元祖,保存新的字符串,和替换成功的次数
    
    re.complie('xxxx')  # 保存着一段正则规则,可以重复使用,减少字符串转化成正则表达式的次数

    3、贪婪匹配和惰性匹配

    正则表达式中匹配机制默认是贪婪匹配,会尽量多的匹配。如果想使用惰性匹配,可以在量词后面加一个?,如*?,+?,??

    4、分组相关

    当findall的匹配规则涉及到分组时,会优先匹配分组里的结果,而不是匹配符合整个正则表达式的结果。如果不需要优先匹配分组,可以在分组中使用(?:xxx)取消优先。

    search(n)可以传递一个参数n,返回第n个分组匹配到的结果。

    split(xxx)如果涉及到分组,会把分组中的内容也保存下来。

    分组命名,与django中路由匹配的一样,(?P<xxx>d+)(?P=xxx),如果想匹配的两个部分是一样的,可以使用这个,比如匹配html标签

    七、math模块

    1.math.gcd(x,y):返回x和y的最大公约数

    八、itertools模块

    1.itertools.groupby(list, func):将序列里的数据,根据func的规则分组

    2.itertools.product(A,B,C...):返回参数里每个元素的笛卡尔积数组组成的列表。

    九、functools模块

    1.functools.wraps:用来给装饰器函数加上,保持原函数的函数信息

    2.functools.lru_cacache:用来给函数加上的装饰器,传入该函数的参数和结果会做一个缓存,同样的参数直接返回结果,但是只会缓存不可变类型的参数结果。

    十、collections模块

    1.defaultdict:当键不存在时返回什么

    2.namedtuple:具名元祖

    3.deque:双端队列

    4.Counter:返回一个字典,键为参数序列中出现的元素,值为各个元素出现的次数

    5。OrderDict:有序字典

  • 相关阅读:
    八数码难题 (codevs 1225)题解
    小木棍 (codevs 3498)题解
    sliding windows (poj 2823) 题解
    集合删数 (vijos 1545) 题解
    合并果子 (codevs 1063) 题解
    等价表达式 (codevs 1107)题解
    生理周期 (poj 1006) 题解
    区间 (vijos 1439) 题解
    区间覆盖问题 题解
    种树 (codevs 1653) 题解
  • 原文地址:https://www.cnblogs.com/yinwenjie/p/10847458.html
Copyright © 2011-2022 走看看