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'\n')
# r 取消这个字符串中的转译作用
# 凡是出现\且没有特殊意义的时候都可以在字符串的前面加上r符号
# r'\\n' r'\n'
# r'\app\ntp'


# 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)

转载于:https://www.cnblogs.com/xuerh/p/8490934.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值