python study 006 正则表达式 re模块 random

正则表达式
# 元字符 : \w \d \s \n \t \W \S \D \b ^ $ . [] [^] () |
# [0-9] \d 这种情况下 应该\d
# [1-9]
# [\da-zA-Z]
# 量词 : {n} {n,} {n,m} * ? +
# 转义符 :
# python str : '\'
# 正则表达式中的'\'到了python中都会变成'\\'
# r'\w' 在python当中\不转义了,在Python中就是一个普通的'\',但是在正则表达式中它还是表示一个转义符
# 贪婪匹配/惰性匹配 :
# .*x 贪婪 匹配任意内容最多次,直到最后一个X停止 回溯算法
# .*?X 惰性 匹配任意内容最少次,遇到第一个X就停止

re模块
# findall 返回列表 找所有的匹配项
# search 匹配就 返回一个变量,通过group取匹配到的第一个值,不匹配就返回None,group会报错
# match 从头开始匹配第一个相当于search的正则表达式中加了一个'^'

# spilt 返回列表,按照正则规则切割,默认匹配到的内容会被切掉
# sub/subn 替换,按照正则规则去寻找要被替换掉的内容,  subn返回元组,第二个值是替换的次数

# finditer 返回一个迭代器,所有匹配到的内容需要迭代取到,迭代取到的每一个结果都需要循环+group取具体值
  # -- 节省内存空间
# compile 编译,先把一个正则表达式编译,编译之后,在之后多次使用的过程不用重新编译
  # -- 节省时间 提高效率

分组:()
# 1.给不止一个字符的整体做量词约束的时候 www(\.[\w]+)+ www.baidu.com
# 2.优先显示,当要匹配的内容和不想匹配的内容混在一起的时候,
  # 就匹配出所有内容,但是对实际需要的内容进行分组
# 3.分组和re模块中的方法 :
  # findall : 分组优先显示 取消(?:正则)
  # search :
    # 可以通过.group(index)来取分组中的内容
    # 可以通过.group(name)来取分组中的内容
      # 正则 (?P<name>正则)
      # 使用这个分组 ?P=name
  # split : 会保留分组内的内容到切割的结果中
compile flags

flags有很多可选值:

re.I(IGNORECASE)忽略大小写,括号内是完整的写法
re.M(MULTILINE)多行模式,改变^和$的行为
re.S(DOTALL)点可以匹配任意字符,包括换行符
re.L(LOCALE)做本地化识别的匹配,表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境,不推荐使用
re.U(UNICODE) 使用\w \W \s \S \d \D使用取决于unicode定义的字符属性。在python3中默认使用该flag
re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释

random模块

# 取随机小数 : 数学计算
# print(random.random()) # 取0-1之间的小数
# print(random.uniform(1,2)) # 取1-2之间的小数

# 取随机整数 : 彩票 抽奖
# print(random.randint(1,2)) # [1,2]
# print(random.randrange(1,2)) # [1,2)
# print(random.randrange(1,200,2)) # [1,200,2)

# 从一个列表中随机抽取值 : 抽奖
# l = ['a','b',(1,2),123]
# print(random.choice(l)) #从l中取1个值
# print(random.sample(l,2)) #从l中取n个值

# 打乱一个列表的顺序,在原列表的基础上直接进行修改,节省空间# 洗牌
# random.shuffle(l)
# print(l)

 time模块

# time.sleep(2) # 程序走到这儿会等待2s钟

# time模块主要是用来和时间打交道的
# 时间格式

# 时间戳时间1534732642.617272 浮点型数据类型,以s为单位 时间戳时间 - 给机器计算用的

# print(time.time())

# str格式化时间 '2018-8-20' '2018.8.20' 字符串数据类型 格式化时间 - 给人看
# print(time.strftime('%Y-%m-%d %H:%M:%S')) # str format time
# print(time.strftime('%y-%m-%d %H:%M:%S')) # str format time
# print(time.strftime('%c'))

# 结构化时间localtime将一个时间戳转换为当前时区的struct_time
# struct_time = time.localtime() # 北京时间
# print(struct_time)
# print(struct_time.tm_mon)

# 时间戳换成字符串时间
# print(time.time())
# struct_time = time.localtime(1500000000)
# # print(time.gmtime(1500000000))     

#time.gmtime(时间戳)    #UTC时间,与英国伦敦当地时间一致
#time.localtime(时间戳) #当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间

# ret = time.strftime('%y-%m-%d %H:%M:%S',struct_time)
# print(ret)

# 字符串时间 转 时间戳
# struct_time = time.strptime('2018-8-8','%Y-%m-%d')
# print(struct_time)
# res = time.mktime(struct_time)
# print(res)

 

 

 



posted @ 2019-12-18 16:48  xiaowei8  阅读(66)  评论(0)    收藏  举报