re模块 模块
import re
findall() 烦的奥
import re
# 1. findall 查找所有结果,数据不是特别庞大
lst = re.findall('a','abcsdfasdfa')
print(lst)
finditer() 烦的一特
#2. finditer 找到的结果返回迭代器
it = re.finditer(r'\d+','你好啊200,哈哈233')
for el in it:#从迭代器中获取到的是分组的信息
print(el.group())#个肉破,获取具体信息
search() 色吃
#3. search() 查找, 如果查找到第一个结果,就停止,如果查不到结果就返回None
ret = re.search('e','abc')
print(ret)#不要用空去点
match() 卖吃
#4. match() 查找
ret = re.match('a','abc')#从头开始找.给正则加^
print(ret.group())
相关操作
ret = re.split('ab','ab哈哈ab你好哈哈') (\d+)带了括号原来的刀还留着
print(ret)#按照正则切,切完了,产生空白
#sub(仨波)替换 第一个参数是替换的东西,第二个替换的结果
ret1 = re.sub('250','__sb__','哈哈250你好啊250,我不好250')
print(ret1)
#shbn(仨波n)替换,加替换了多少次
ret1 = re.subn('250','__sb__','哈哈250你好啊250,我不好250')
print(ret1)
#compile()康派奥!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!作用很大
obj = re.compile(r'\d+')#预加载.先把这个正则加载到内存,用的时候不用再加载,写一遍
lst = obj.findall('哈哈222,你好2222')#从内存中拿直接用
print(lst)
?P<名>正则 给正则取名字,想把什么抠出来,就用这个取名
obj = re.compile(r'(?P<id>\d+)(?P<zimu>e{3})')#给这个正则起名,取值好取
lst = obj.search('abcsdfjsd123eeelkabc')
print(lst.group())
print(lst.group('id'))
print(lst.group('zimu'))
?: 去掉分组
#分组
ret = re.findall('www.(baidu|oldboy).com','www.oldboy.com')
#去掉分组
ret1 = re.findall('www.(?:baidu|oldboy).com','www.oldboy.com')
爬虫
rom urllib.request import urlopen #打开一个链接.读取源代码
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
def getPage(url):
response = urlopen(url)#打开,和网页链接
return response.read().decode('utf_8')#返回正常页面源代码 读取源代码 编码 抵扣的
def parsePage(s):#页面源代码
ret = re.findall('<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>', s, re.S)
return ret #id,title, rating_num, comment_num def main(num):
url = 'https://movie.douban.com/top250?start=%s&filter=' % num
response_html = getPage(url) # response_html是页面源代码
ret = parsePage(response_html)
print(ret) # id,title, rating_num, comment_num s = 0
for i in range(10): #10页
main(s)#分页 第一个0 25 50 75
s += 25
精细版
import ssl
import re
from urllib.request import urlopen
# ⼲干掉数字签名证书
ssl._create_default_https_context = ssl._create_unverified_context
def getPage(url):
response = urlopen(url)
return response.read().decode('utf-8')
def parsePage(s):
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)
ret = com.finditer(s)
for i in ret:
yield {
"id": i.group("id"),
"title": i.group("title"),
"rating_num": i.group("rating_num"),
"comment_num": i.group("comment_num"),}
def main(num):
url = 'https://movie.douban.com/top250?start=%s&filter=' % num
response_html = getPage(url)
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")
count = 0
for i in range(10):
main(count)
count += 25
模块
import 模块名 嗯炮特
1.检查是否已经被导入过,顺序 内存 -> 内置 -> sys.path
2. 如果没有导入过这个模块,先创建一个名称空间
3. 然后把导入的模块执行一遍. 把执行的结果放在刚才的空间中
4. 把模块的名字命名给这个空间
所有被导入的模块都会放在sys.modules字典里
使用模块中的内容. 模块名字.方法/变量/类
__name__: 如果当前模块是程序的入口. __name__的值:__main___
if __name__ == '__main__': # __main__ 程序的入口
print("我在浪挖的测试")
如果模块是被其他模块引入的. __name__是模块名
from xxx import xxx
from 模块 import 模块中的内容
from 模块 import * 不推荐 导入的内容可以直接使用. 不需要模块.xxx. 和当前模块中的变量冲突
as可以起名字
import sys
print(sys.modules.keys()) # 查看到已经引入的模块信息
print(sys.path)
re模块 模块的更多相关文章
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
- 第十八篇 模块与包--time&random模块&模块导入import(os.path.dirname(os.path.abspath(__file__)))
模块 在Python中, 一个.py文件就称为一个模块. 使用模块的好处: 1. 最大的好处就是大大提高了代码的可维护性 2. 编写代码不必从零开始.一个模块编写完毕,就可以被其他地方引用.在写其他程 ...
- python学习之模块-模块(一)
第五章 5.1 自定义模块 模块概念: 把一些常用的函数放在一个py文件中,这个文件就称之为模块. 模块的意义: 1.方便管理.让程序的解构更加清晰,实现功能的重复使用: 2.提升开发效率 ...
- (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...
- random os 序列化 模块模块 随机选择
# 1 random 模块 随机选择# import random#随机取小数# ret = random.random() #空是0到1之间的小数字# print(ret)# # 0.0799728 ...
- python-day21--序列化模块模块
什么叫序列化——将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化 序列化的目的: 1.以某种存储形式使自定义对象持久化: 2.将对象从一个地方传递到另一个地方. 3.使程序更具维护性. ...
- os 模块 模块与包的初始
os模块是与操作系统交互的模块之前我们也用过os模块就是更改文件的名字的时候 我们如果用os求求文件夹是不行的 可以求文件 因为文件夹在python中最大就是4090个字节 所以你必须求出文件夹内 ...
- ANSIBLE安装和常用模块模块使用详细教程
目录 ANSIBLE安装和各种模块应用功能 安装配置ANSIBLE ANSIBLE使用 ansible-galaxy工具 ansible-pull工具 ansible-playbook ansible ...
- 导模块的细节:(跨文件导入模块 &模块的两种执行方式) | 包的概念与使用 | 包中的相对导入语法
今日内容 包: 1. 导入模块的细节 2. 包的概念与使用 3. 包中的相对导入语法 跨文件夹导入模块 1. 假设有一个文件夹a ,a 的下面有一个ma 的模块,如果a文件夹所在目录在环境变量,a文件 ...
随机推荐
- day13作业—(登录注册)
2.写一个函数完成三次登陆功能: 用户的用户名密码从一个文件register中取出. register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行. 完成三次验证, ...
- 20 模块之 re subprocess
re: 什么是正则: 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 ...
- 2019.01.24 NOIP训练 旅行(轮廓线dp)
传送门 题意简述: 给一个n∗mn*mn∗m的有障碍的网格图,问你从左上角走到左下角并覆盖所有可行格子的路径条数. 思路: 路径不是很好算. 将图改造一下,在最前面添两列,第一列全部能通过,第二列只有 ...
- 2018.12.08 codeforces 914D. Bash and a Tough Math Puzzle(线段树)
传送门 线段树辣鸡题. 题意简述:给出一个序列,支持修改其中一个数,以及在允许自行修改某个数的情况下询问区间[l,r][l,r][l,r]的gcdgcdgcd是否可能等于一个给定的数. 看完题就感觉是 ...
- Java日期时间使用总结[转载]
Java日期时间使用总结 一.Java中的日期概述 日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式 ...
- JPA错误
2016-11-141.2016-10-31: hibernate用注解 一对多 报Could not determine type for错误 原因: 接下来继续解决第二个问题:怎么又与集合打交道 ...
- Hadoop Hbase理论及实操
Hbase特点 HBase是一个构建在HDFS上的分布式列存储系统:HBase是基于Google BigTable模型开发的,典型的key/value系统:HBase是Apache Hadoop生态系 ...
- 主机网络ping: unknown host baidu.com问题解决
本机环境: 系统:Centos 网络:NAT 虚拟机之前一直都可以连外网,但最近不能连了,现状如下: [root@vhost03 ~]# ping baidu.comping: unknown hos ...
- LINQ 语法
语言集成查询 (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 版中一项突破性的创新,它在对象领域和数据领域之间架起了一座桥梁. 传统上,针对数据的查询 ...
- 浮点型转整数型进行计算 - 移动GIS设备硬件的原因
在ArcGIS9.1之前桌面版ArcGIS都是采用整数存储的,是为了效率,将浮点型转为整数型存储,但9.2之后随着硬件的提升,浮点型的效率已经得到提高了,所以不再转换.但移动GIS设备还是要转整数型. ...