zoukankan      html  css  js  c++  java
  • Day17re模块和hashlib模块

    re模块
    正则表达式
    用一些特殊符号拼凑成的规则,去字符串中匹配到符合规则的东西

    为什么有正则表达式
    从字符串中取出想要的数据

    怎么用正则表达式
    re.findall()结果存成列表
    w 匹配一个字符,字符,数字,下划线
    W 匹配一个字符,非字符,数字,下划线
    s 匹配一个字符,空白字符
    S 匹配一个字符,非空白字符
    d 匹配一个字符,数字
    D 匹配一个字符,非数字
    ^从头开始匹配
    $从尾开始匹配

    重复匹配
    点(.),匹配一个字符,可以是任意非 字符, re.DOTALL(flags)
    [],匹配一个字符,当需要匹配"-"时
    方法1,-放到最左或最右
    方法2,-前加转义
    []放在[]内,表示取反

    ? 代表左边那一个字符出现0次到1次
    * 代表左边出现0次到无穷次
    + 代表左边字符出现1次到无穷次
    {m,n} 代表左边出现m次,不超过n次

    .贪婪匹配(尽可能多的匹配字符)
    .
    ?非贪婪匹配(尽可能少的匹配字符)

    |或者,两选1
    () 分组,默认情况下只留下匹配成功组内的东西
    (?:)匹配成功全部都拿到

    print(re.findall("alex","my name is alex,aLex is dsb ALex",re.I))
    re.I忽略大小写

    msg = """
    my name is egon
    adadfafdadfa egon
    fdafadfdafegon
    """

    print(re.findall("egon$",msg,re.M))
    以 为分隔符,分成三行,各自匹配

    pattern = re.compile("alex")
    pattern.findall(msg)

    hashlib
    hash是一种算法,高效解决某一类问题的方法
    1.接收一系列数据,经过运算,得到一个返回值,该返回值叫hash值
    hash值特点
    1.只要传入内容一样得到的hash值一样
    2.只要采用hsah算法固定,无论传入的内容多大,hash值的长度是固定的
    3.hash值不可逆,不可通过hash值逆推出内容

    为何要用hash
    用途:1.文件完整性校验(特性1和2)
    2.加密
    m = hashlib.md5()
    m.update()接收的数据必须是bytes类型
    m.update("你好".encode("utf8"))
    m.update("hello".encode("utf8"))
    m.update(b"hello")
    print(m.hexdigest())

    文件截取内容:
    with open("a.txt","rb")as f:
    for line in f:
    m.update(line)
    res = m.hexdigest()
    文件过大需要全部读取出来加密,影响我们的下载速度,故截取部分类容加密

    密码加盐:
    m = hashlib.md5()
    pwd = input("input your pwd:").strip()
    m.update("天王盖地虎")
    m.update(pwd)
    m.update("宝塔镇河妖")
    res = m.hexdigest()

  • 相关阅读:
    centos7.5搭建zabbix3.4.x以及mysql定制化监控
    dockerfile 的常用讲解
    使用nginx快速搭建文件服务器
    centos7 安装ELK
    centos7 安装Gitlab
    centos7 安装jenkins
    ansible-playbook使用详解
    DNS主从配置
    ansible 安装部署文档
    WPF Grid MouseWheel事件无法触发
  • 原文地址:https://www.cnblogs.com/robert-zhou/p/10080085.html
Copyright © 2011-2022 走看看