• re 模块 , random 模块 , collections 模块


    # ======================          ==================        模块 = =  = ==  = =
    #re 模块
    import re
    # 使用python操作正则表达式的一个模块
    # 我们使用这个模块 只需要 自己写正则表达式 和 带匹配的字符
    # 模块名.方法名()
    # ret = re.findall('d', 'eva1 egon2 yuan3') # 返回所有满足匹配条件的结果,放在列表里
    # print(ret)
    # ret = re.findall('[0-9]', 'eva1 egon2 yuan3') # 返回所有满足匹配条件的结果,放在列表里
    # print(ret)
    # findall这个方法:两个参数,正则表达式和待匹配的字符串,返回值是一个列表,列表中的内容是"所有"符合条件的项

    # ret = re.search('a', 'eva egon yuan')
    # print(ret) # 匹配到的一项内容示意
    # if ret:
    # res = ret.group() # 获取实际匹配到的值
    # print(res)
    # search方法:两个参数,正则表达式和待匹配的字符串
    # 返回的是第一个满足条件的项
    # 使用.group()方法就可以获取到具体的值
    # 需要注意的是,如果没有匹配上,使用.group()会报错
    # 所以应该在使用group防止之前做判断

    # ret = re.match('ab', 'abc')
    # print(ret) # 没找到则返回None
    # res = ret.group()
    # print(res)
    # match和search是基本相同的,不同的是match方法的正则自带^效果

    # search ,match ,findall
    # group是什么意思? 组
    # 分组()
    # ret = re.findall('[a-z]d','ab2748cdef14g239')
    # print(ret)
    # ret = re.findall('(?:[a-z])d','ab2748cdef14g239')
    # print(ret)
    # 在findall的正则规则中有分组 仍然按照正则规则去匹配,只不过在显示的时候,只显示分组中的内容

    # ret = re.findall('www.(?:baidu|oldboy).com', 'www.oldboy.com')
    # print(ret)

    # ret = re.search('([a-z])(d)','ab2748cdef14g239')
    # print(ret.group()) # 直接获取正则规则匹配到的项
    # print(ret.group(2)) # 如果给group传递参数,那么传递的参数能够代表在正则表达式中组的次序
    # print(ret.group(1)) # 从而获取到对应次序上的值


    # ret = re.split('d', 'a1b2c3d4') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
    # ret = re.split('[ab]', 'a* bcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
    # print(ret) # ['', '', 'cd']

    # ret = re.sub('d', 'H', 'eva3egon4yuan4')#将数字替换成'H',参数1表示只替换1个
    # print(ret) #evaHegon4yuan4

    # ret = re.subn('d', 'H', 'eva3egon4yuan4',6)#将数字替换成'H',返回元组(替换的结果,替换了多少次)
    # print(ret)

    # obj = re.compile('d{3}') #将正则表达式编译一下得到一个结果,规则要匹配的是3个数字
    # ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串
    # print(ret.group())
    # ret = obj.search('abc456eeee') #正则表达式对象调用search,参数为待匹配的字符串
    # print(ret.group())

    # import re
    # ret = re.finditer('d', 'ds3sy4784a') #finditer返回一个存放匹配结果的迭代器
    # print(ret) # <callable_iterator object at 0x10195f940>
    # for i in ret:
    # print(i.group())

    import re
    # ret = re.search('<(?P<tag>w+)>(w+)</(?P=tag)>',"<h1>hello</h1>")
    # print(ret.group(2))
    # print(ret.group('tag'))

    # ret = re.search(r"<(w+)>w+</1>","<h1>hello</h1>")
    # print(ret.group(1))

    # ret=re.findall("d+","1-2*(60+(-40.35/5)-(-4*3))")
    # print(ret)

    # d+.d+ | d+
    # ret=re.findall("d+.d+|(d+)","1-2*(60+(-40.35/5)-(-4*3))")
    # ret.remove('')
    # print(ret)
    # print(r'\n')
    # print(r' ')
    # r 取消这个字符串中的转译作用
    # 凡是出现且没有特殊意义的时候都可以在字符串的前面加上r符号
    # r'\n' r' '
    # r'app tp'


    # p = (1,2)
    # x = p[0]
    # y = p[1]

    # p2 = (3,4)
    # x2 = p2[0]
    # y2 = p2[1]



    # ============ collections 模块 +++++=


    # from collections import namedtuple
    # point = namedtuple('Point',['x','y','z']) # 创造模子
    # p1 = point(1,2,1)
    # print(p1,p1.x,p1.y,p1.z) # 首先 明确了 要表示的数据 都是什么
    # # 取数据的时候不会乱 不管在任何时候从元组中取数据 都可以明确的知道要取的内容
    # p2 = point(3,4,1)
    # print(p2.x,p2.y)

    # 扑克 花色 大小
    # 使用可命名元组去描述一张牌


    # deque 双端队列
    # queue 队列
    # FIFO first in first out 先进先出
    import queue
    # q = queue.Queue()
    # q.put(1)
    # q.put(3)
    # q.put(0)
    # print(q.get())
    # print(q.get())
    # print(q)
    # from collections import deque# 双端队列 两边都可以 取值
    # dq = deque()
    # dic = {"alex":1}
    # dq.append(dic)
    # dq.append(2)
    # print(dq)
    # dq.appendleft(3)
    # print(dq)
    # print(dq.pop())
    # print(dq.popleft())

    # d = dict([('a', 1), ('b', 2), ('c', 3)])
    # print(d)
    # d = dict([('a',1),('b',2),("c",3)])
    # print(d)
    from collections import OrderedDict
    # od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    # print(od)
    # for i in od:
    # print(i,od[i])

    # {'电脑':1000,'手机':20}
    # values = [11, 22, 33,44,55,66,77,88,99,90]
    # my_dict = {}
    # for value in values:
    # if value>66:
    # if 'k1' in my_dict:
    # my_dict['k1'].append(value)
    # else:
    # my_dict['k1'] = [value]
    # else:
    # if 'k2' in my_dict:
    # my_dict['k2'].append(value)
    # else:
    # my_dict['k2'] = [value]


    # from collections import defaultdict
    # # values = [11, 22, 33,44,55,66,77,88,99,90]
    # my_dict = defaultdict(list)
    # # for value in values:
    # # if value>66:
    # # my_dict['k1'].append(value)
    # # else:
    # # my_dict['k2'].append(value)
    #
    #
    from collections import Counter
    # c = Counter('abcdeabcdabcaba')
    # print (c)


    # ================ = random 模块 ============
    # 随机
    # 验证码
    # 抽奖
    import random
    #随机小数
    # >>> random.random() # 大于0且小于1之间的小数
    # 0.7664338663654585
    # >>> random.uniform(1,3) #大于1小于3的小数
    # 1.6270147180533838

    #随机整数
    # >>> random.randint(1,5) # 大于等于1且小于等于5之间的整数
    # >>> random.randrange(1,10,2) # 大于等于1且小于10之间的奇数


    #随机选择一个返回
    # print(random.choice([1,'23',[4,5]]))
    #随机选择多个返回,返回的个数为函数的第二个参数
    # print(random.sample([1,'23',[4,5]],3))

    # 排序 10000
    # item = [1,3,5,7,9]
    # random.shuffle(item)
    # print(item)
  • 相关阅读:
    个人总结
    第十六周学习进度条
    第二阶段冲刺第十天
    第二阶段冲刺第九天
    分层体系架构模式
    安卓语音识别
    AndroidStudio中导入jar包的方法
    Android中控件之间添加分割线
    按照分层设计理念,完成《XXX需求征集系统》的概念结构设计
    在Eclipse下搭建Hibernate框架(加载hibernate工具插件,离线)
  • 原文地址:https://www.cnblogs.com/xuerh/p/8490934.html
Copyright © 2020-2023  润新知