re模块 ,random模块

# 在python中使用正则表达式    # 转义符 : 在正则中的转义符 \ 在python中的转义符# 正则表达式中的转义 :# ‘\(‘  表示匹配小括号# [()+*?/$.]   在字符组中一些特殊的字符会现出原形# 所有的 \w \d \s(\n,\t, )  \W \D \S都表示它原本的意义# [-]只有写在字符组的首位的时候表示普通的减号#    写在其他位置的时候表示范围[1-9]#    如果就是想匹配减号 [1\-9]

# python中的转义符# 分析过程‘\n‘  # \转义符 赋予这个n一个特殊的意义 表示一个换行符# print(‘\\n‘)# print\\n(‘C:\\next‘)# print(r‘C:\next‘)# ‘\\\\n‘ ‘\\n‘# 结论# r‘\\n‘ r‘\n‘  在python中

# 转义符# print(‘\n‘)  # --> \\ \# \ 是有特殊意义的# 你看见了这个\ 不应该理解为这是一个‘\‘,它是一个转义符# 你想把这个转义符变成一个字符串‘\‘,它必须经过转义# ‘\\‘ 等于字符串数据类型的‘\‘# ‘\\n‘# import re# ret = re.search(‘\\\\n‘,‘\\n‘)# print(ret)# 如果一个字符串形式的‘\‘取消了它转义符的意思,就表示一个字符串‘\‘# 那么就不需要再使用‘\\‘来表示‘\‘了# 我们就在字符串前面加上一个r‘‘,取消这个字符串中所有‘\‘的转义# import re# ret = re.search(r‘\\n‘,r‘\n‘)# print(ret)

# 在测试的工具中,如果带了\,你又担心它会出现转义的情况# 不管三七二十一,在测试工具里测好了的代码# 拿到python中,统一放在字符串r‘‘中就行了

***********************************************************************************************    # re模块        # findall search match        # sub subn split        # compile finditer    # python中的正则表达式        # findall 会优先显示分组中的内容,要想取消分组优先,(?:正则表达式)        # split 遇到分组 会保留分组内被切掉的内容        # search 如果search中有分组的话,通过group(n)就能够拿到group中的匹配的内容# import re# 字符串# 匹配# findall  *****# ret = re.findall(‘\d+‘,‘19874ashfk01248‘)# print(ret)  # 参数 返回值类型:列表 返回值个数:1 返回值内容:所有匹配上的项# ret1 = re.findall(‘\s+‘,‘19874ashfk01248‘)# print(ret1)# search   *****# ret2 = re.search(‘\d+‘,‘@$19874ashfk01248‘)# print(ret2) #  返回值类型: 正则匹配结果的对象  返回值个数:1 如果匹配上了就返回对象# if ret2:print(ret2.group()) # 返回的对象通过group来获取匹配到的第一个结果# ret3 = re.search(‘\s+‘,‘19874ashfk01248‘)# print(ret3) #  返回值类型: None   如果没有匹配上就是None# match  **# ret4 = re.match(‘\d+‘,‘19874ashfk01248‘)# print(ret4)# ret5 = re.match(‘\d+‘,‘%^19874ashfk01248‘)# print(ret5)

# 替换 replace# sub ***# print(‘replace789,24utdeedeeeeshf‘.replace(‘e‘,‘H‘,3))# ret = re.sub(‘\d+‘,‘H‘,‘replace789nbc2xcz392zx‘)# print(ret)# ret = re.sub(‘\d+‘,‘H‘,‘replace789nbc2xcz392zx,48495‘,1)# print(ret)# subn ***# ret = re.subn(‘\d+‘,‘H‘,‘replace789nbc2xcz392zx‘)# print(ret)

# 切割# split ***# print(‘alex|83|‘.split(‘|‘))# ret = re.split(‘\d+‘,‘alex83egon20taibai40‘)# print(ret)

# 进阶方法 - 爬虫\自动化开发# compile ***** 时间效率# re.findall(‘-0\.\d+|-[1-9]+(\.\d+)?‘,‘alex83egon20taibai40‘)  --> python解释器能理解的代码 --> 执行代码# ret = re.compile(‘-0\.\d+|-[1-9]\d+(\.\d+)?‘)# res = ret.search(‘alex83egon-20taibai-40‘)# print(res.group())# 节省时间 : 只有在多次使用某一个相同的正则表达式的时候,这个compile才会帮助我们提高程序的效率# # finditer ***** 空间效率# print(re.findall(‘\d‘,‘sjkhkdy982ufejwsh02yu93jfpwcmc‘))# ret = re.finditer(‘\d‘,‘sjkhkdy982ufejwsh02yu93jfpwcmc‘)# for r in ret:#     print(r.group())*****************************************************************************************************# 正则表达式进阶    # 分组命名        # (?P<name>正则表达式) 表示给分组起名字        # (?P=name)表示使用这个分组,这里匹配到的内容应该和分组中的内容完全相同    # 通过索引使用分组        # \1 表示使用第一组,匹配到的内容必须和第一个组中的内容完全相同# import re# ret = re.findall(‘-0\.\d+|-[1-9]\d*(\.\d+)?‘,‘-1asdada-200‘)# print(ret)# ret = re.findall(‘-100qweqwe-200)# print(ret)# ret = re.findall(‘www.(?:baidu|oldboy).com‘,‘www.oldboy.com‘)     #?: 取消括号优先级# print(ret)

# ret = re.findall(‘-0\.\d+|-[1-9]\d*(?:\.\d+)?‘,‘-1asdada-200‘)# print(ret)

# ret = re.split(‘\d+‘,‘alex83egon20taibai40‘)# print(ret)# ret = re.split(‘(\d+)‘,‘alex83egon20taibai40‘)# print(ret)

# 分组遇见search# ret = re.search(‘\d+(.\d+)(.\d+)(.\d+)?‘,‘1.2.3.4-2*(60+(-40.35/5)-(-4*3))‘)# print(ret.group())# print(ret.group(1))# print(ret.group(2))# print(ret.group(3))

# import re# ret = re.findall(‘>(\w+)<‘,r‘<a>wahaha<\a>‘)# print(ret)

# ret = re.search(r‘<(?P<name>\w+)>(\w+)</(\w+)>‘,r‘<a>wahaha</b>‘)# print(ret.group())# print(ret.group(1))# print(ret.group(2))

# 分组命名# ret = re.search(r"<(?P<name>\w+)>\w+</(?P=name)>",r"<h1>hello</h1>")# print(ret.group(‘name‘))  #结果 :h1# # print(ret.group())  #结果 :<h1>hello</h1>## ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>")# print(ret.group(1))# # print(ret.group())  #结果 :<h1>hello</h1>

# ret = re.search(r‘<(?P<tag>\w+)>(?P<c>\w+)</(\w+)>‘,r‘<a>wahaha</b>‘)# print(ret.group())# print(ret.group(‘tag‘))# print(ret.group(‘c‘))

*****************************************************************************************一段爬虫代码import refrom urllib.request import urlopen# 内置的包 来获取网页的源代码 字符串# res = urlopen(‘http://www.cnblogs.com/Eva-J/articles/7228075.html‘)# print(res.read().decode(‘utf-8‘))

def getPage(url):    response = urlopen(url)    return response.read().decode(‘utf-8‘)

def parsePage(s):   # s 网页源码    ret = com.finditer(s)    for i in ret:        ret = {            "id": i.group("id"),            "title": i.group("title"),            "rating_num": i.group("rating_num"),            "comment_num": i.group("comment_num")        }        yield ret

def main(num):    url = ‘https://movie.douban.com/top250?start=%s&filter=‘ % num  # 0    response_html = getPage(url)   # response_html是这个网页的源码 str    ret = parsePage(response_html) # 生成器    print(ret)    f = open("move_info7", "a", encoding="utf8")    for obj in ret:        print(obj)        data = str(obj)        f.write(data + "\n")    f.close()

com = re.compile(        ‘<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>‘        ‘.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>‘, re.S)count = 0for i in range(10):    main(count)  # count = 0    count += 25

********************************************************************************************************************random 模块

import random# 随机 : 在某个范围内取到每一个值的概率是相同的# 随机小数# print(random.random())  # 0-1之内的随机小数# print(random.uniform(1,5)) # 任意范围之内的随机小数

# 随机整数 *****# print(random.randint(1,2)) # [1,2] 包含2在内的范围内随机取整数# print(random.randrange(1,2)) # [1,2)不包含2在内的范围内随机取整数# print(random.randrange(1,10,2)) # [1,10)不包含10在内的范围内随机取奇数

# 随机抽取# 随机抽取一个值# lst = [1,2,3,‘aaa‘,(‘wahaha‘,‘qqxing‘)]# ret = random.choice(l)# print(ret)# 随机抽取多个值# ret = random.sample(lst,2)# print(ret)

# 打乱顺序  在原列表的基础上做乱序# lst = [1,2,3,‘aaa‘,(‘wahaha‘,‘qqxing‘)]# random.shuffle(lst)# print(lst)

# 抽奖 \ 彩票 \发红包 \验证码 \洗牌

# 生成随机验证码# 4位数字的import random# 0-9# 基础版本# code = ‘‘# for i in range(4):#     num = random.randint(0,9)#     code += str(num)# print(code)

# 函数版本# def rand_code(n=4):#     code = ‘‘#     for i in range(n):#         num = random.randint(0,9)#         code += str(num)#     return code## print(rand_code())# print(rand_code(6))

# 6位 数字+字母# print(chr(97))# print(chr(122))# import random

# 基础版# code = ‘‘# for i in range(6):#     rand_num = str(random.randint(0,9))#     rand_alph = chr(random.randint(97,122))#     rand_alph_upper = chr(random.randint(65,90))#     atom_code = random.choice([rand_num,rand_alph,rand_alph_upper])#     code += atom_code# print(code)

# 函数版# def rand_code(n=6):#     code = ‘‘#     for i in range(n):#         rand_num = str(random.randint(0,9))#         rand_alph = chr(random.randint(97,122))#         rand_alph_upper = chr(random.randint(65,90))#         atom_code = random.choice([rand_num,rand_alph,rand_alph_upper])#         code += atom_code#     return code## ret = rand_code()# print(ret)

# 数字/数字+字母# def rand_code(n=6 , alph_flag = True):#     code = ‘‘#     for i in range(n):#         rand_num = str(random.randint(0,9))#         if alph_flag:#             rand_alph = chr(random.randint(97,122))#             rand_alph_upper = chr(random.randint(65,90))#             rand_num = random.choice([rand_num,rand_alph,rand_alph_upper])#         code += rand_num#     return code# # ret = rand_code(n = 6)# print(ret)

# ***** 永远不要创建一个和你知道的模块同名的文件名

原文地址:https://www.cnblogs.com/xdlzs/p/9439948.html

时间: 2024-10-24 06:04:47

re模块 ,random模块的相关文章

Python进阶(十)----规范化格式目录, time模块, datatime模块,random模块,collection模块(python额外数据类型)

Python进阶(十)----规范化格式目录, time模块, datatime模块,random模块,collection模块(python额外数据类型) 一丶规范化格式目录 六个目录: #### 对某某项目进行一个标准化的开发,进行规范化. #bin : 启动项目程序的主入口 #conf : 项目的配置文件 #core : 主要逻辑(业务逻辑) #db : 存放数据() #lib : 辅助文件(存放公共的一些方法) #README : 项目文档说明 ? 二丶time模块(时间模块) 时间的三

python - 常用模块 - random模块

python中的random模块主要是用来生成随机数 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 import random 11 #1.random.random() 返回一个产生介于0-1之间的随机数 12 a = random.random() 13 print('a:',a) # a: 0.6166193118806547 14 15 #2.random.uniform(start,end) 返回一个介于[start,end]([]这里是数学的

Python 常用模块(1) -- collections模块,time模块,random模块,os模块,sys模块

主要内容: 一. 模块的简单认识 二. collections模块 三. time时间模块 四. random模块 五. os模块 六. sys模块 一. 模块的简单认识 模块: 模块就是把装有特定功能的代码进行归类的结果引入模块的方式: (1) import 模块 (2) from 位置 import 模块 二. collections模块 collections模块主要封装了一些关于集合类的相关操作. 如我们学过的iterable,iterator等等.除此以外, collections还提

python shutil模块&amp;random模块

shutil模块 import shutil shutil.copyfileobj(open("os_.py", "r"), open("os_2.py", "w")) # 将文件内容拷贝到另一个文件中,目标文件无需存在 shutil.copyfile("os_.py", "os_1.py") # 拷贝文件,目标文件无需存在 shutil.copymode("os_.py&qu

logging模块,collections模块,random模块

logging日志模块 低配版 import logging logging.basicConfig(lexel=logging.INFO, format='%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s%(message)s filename='low版logging.log' ) logging.debug('debug message') logging.info('info message') logging.warning('

Python--正则表达式,re模块,collections模块,random模块,时间模块

正则表达式 元字符量词(?) 元字符 : . \w \d \s \W \D \S \n \t \b () | [] [^] ^ $ 量词 : * + ? {n} ,{n,} ,{n,m} re模块怎么调用re模块 查找 : findall search match finditer 分割和替换 :split sub subn 编译 :compile 节省时间re模块到底用在了几个地方? 量词 :表示匹配0次或1次 在量词之后 :是惰性匹配的标志 分组命名 :(?P<NAME>正则表达式) 引用

Day5模块-random模块

random:随机数 >>> import random>>> print(random.random()) #生成随机小数0.6906362176182085 >>> print(random.randint(1,5)) #生成1-5的随机数,包括51 >>> print(random.sample(range(100),5))  #从0-100随机生成5个[42, 0, 15, 83, 20] 两个实例:随机验证码 1 >&

python模块——random模块(简单验证码实现)

实现一个简单的验证码生成器 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = "loki" # Usage: 验证码生成 import random def verification_code(digit): verify_code = "" for count in range(0, digit): int_num = random.randint(0, 9) lower_case = chr(ra

python3 时间模块 random模块之两个小练习

话不多说,一个是算时间的,还有一个是生成验证码的 1 #!usr/bin/env/ python 2 # -*- coding:utf-8 -*- 3 # Author: XiaoFeng 4 import time 5 start_time = "2016-9-1 7:00:00" 6 handel = time.mktime(time.strptime(start_time, "%Y-%m-%d %H:%M:%S")) 7 now = time.time() 8