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) # ***** 永远不要创建一个和你知道的模块同名的文件名
re模块 ,random模块的更多相关文章
- python常用模块——random模块
参考博客:http://www.360doc.com/content/14/0430/11/16044571_373443266.shtml 今天突然想起python该怎么生成随机数?查了一下,贴出实 ...
- Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型)
Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型) 一丶软件开发规范 六个目录: #### 对某 ...
- Python模块01/自定义模块/time模块/datetime模块/random模块
Python模块01/自定义模块/time模块/datetime模块/random模块 内容大纲 1.自定义模块 2.time模块 3.datetime模块 4.random模块 1.自定义模块 1. ...
- python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块
正则表达式 语法: mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...
- Python:time模块/random模块/os模块/sys模块
time 模块 #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取当前时间戳 python中时间日期格式化符号: %y 两位数的 ...
- python shutil模块&random模块
shutil模块 import shutil shutil.copyfileobj(open("os_.py", "r"), open("os_2.p ...
- 4-24日 collections模块 random模块 time模块 sys模块 os模块
1, collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdi ...
- Python全栈之路----常用模块----random模块
程序中有很多地方需要用到随机字符,比如登陆网站的随机验证码,通过random模块可以很容易生成随机字符串. >>> import random >>> random ...
- python 全栈开发,Day27(复习, defaultdict,Counter,时间模块,random模块,sys模块)
一.复习 看下面一段代码,假如运行结果有问题,那么就需要在每一步计算时,打印一下结果 b = 1 c = 2 d = 3 a = b+c print(a) e = a + d print(e) 执行输 ...
- python常用模块: random模块, time模块, sys模块, os模块, 序列化模块
一. random模块 import random # 任意小数 print(random.random()) # 0到1的任意小数 print(random.uniform(-10, 10)) # ...
随机推荐
- 12.2 linux下的线程
什么是线程: 在一个程序里的一个执行路线就叫做线程(thread),更准确的定义是:线程是“一个进程内部的控制序列” 一切进程至少都有一个执行线程 进程与线程: 进程是资源竞争的基本单位 线程是程序执 ...
- tensorflow中 tf.add_to_collection、 tf.get_collection 和 tf.add_n函数
tf.add_to_collection(name, value) 用来把一个value放入名称是'name'的集合,组成一个列表; tf.get_collection(key, scope=Non ...
- C++ 写的地图控件,支持google 百度 在线离线地图
C++处理google 百度地图在网上查阅了很多都是通过浏览器方式显示地图信息, 跟我目前项目很不符合, 所以仔细研究了一下C++方式显示地图.通过地图投影以及墨卡托投影,在通过平面地图计算经纬度. ...
- Binary file to C array(bin2c)
/******************************************************************************** * Binary file to C ...
- 【opencv基础】linux系统opencv以及opencv_contrib的安装与使用
前言 本文主要介绍如何在linux系统安装使用opencv. 具体步骤可参考opencv官网here. 步骤 编译源码之前需要安装相关依赖库: 1.下载源码: 2.解压源码: 3.配置cmake: 注 ...
- Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法
问题描述 使用SDK Manager更新时出现问题Failed to fetch URL https://dl-ssl.google.com/android/repository/repository ...
- 腾讯的模板引擎---artTemplate
主要方法如下5种,在此不详细说artTemplate的方法,主要记录三种使用artTemplate的方法. template(id, data) 根据 id 渲染模板.内部会根据document.ge ...
- LeetCode Pascal's Triangle && Pascal's Triangle II Python
Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, given ...
- Unity3D 4.x怎样实现动画的Ping Pong效果
近期在看Unity官方的Stealth项目教学视频,视频使用的是Unity旧的版本号,而我如今正在使用的是Unity 4.5,动画系统的操作全然不同了. 依照视频的方式根本无法设置动画的Ping Pi ...
- Javascript undefined 和 null
Javascript undefined 和 null 虽然 Javascript 一切皆对象,但是类型还是有区别的. undefined 表示 未定义的数据类型. null 表示空对象. 在判断时没 ...