活动地址:优快云21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
…
欢迎参与优快云学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程。您可以从以下3个方面任选其一着手(不强制),或者按照自己的理解发布专栏学习作品,参考如下:
**
学习计划
1,学习目标
提示:可以添加学习目标
例如: 一周掌握 Python 入门知识
2,学习内容
提示:可以添加要学的内容
例如:
A,掌握 Python 基本语法
B,掌握 Python 列表、字典、元组等集合类型的用法
C,掌握 Python 函数
D,掌握 Python 常用模块
E, 掌握 Python 模块与包
F,掌握 Python 类与对象
3,学习时间
每天拿出来两个小时
4,学习产出
优快云技术博客 每天一篇
学习日记
day05 Python的基础语法——模块与包、正则模块
什么是模块
在 Python 中,⼀个 .py ⽂件就可以称之为 ⼀个模块(Module )
目的:
-
便于代码的维护,将代码按功能分组管理。(放入不同文件,用文件封装;和函数相似,代码用函数封装)
-
现成的代码实现功能,可以直接使用python中内置的模块,或者网络下载的第三方模块。
-
避免函数名和变量名冲突。不同的模块命名不会冲突,每个模块都有自己的命名空间。
模块分类
模块分为三种:
- 内置标准模块
(⼜称标准库)执⾏ help(‘modules’) 查看所有 python ⾃带模块列表 - 第三⽅开源模块
可通过 pip install 模块名 联网安装
其中plotly是我需要安装的模块名。 - ⾃定义模块
test.py
import my_module
my_module.sayhi("qinyun")
1.模块
# 导入语法1: import 模块名
# import cal
# import db
#
#
# # 关于计算的逻辑
# print("执行模块")
# print(cal.add(1, 5))
# print(cal.mul(2, 5))
# # 关于数据库调用的逻辑
# db.db_connect()
# db.db_close()
# a = 1
# print(cal.a)
# 导入语法2: from 模块名 import 成员变量
import sys
print("sys.path:::",sys.path)
a = 1
from cal import a as cal_a
from cal import * # 性能低一些
print(add(1, 3))
print(mul(2, 3))
print(a)
print(cal_a)
import json
json.dumps()
import time
print(time.time())
# import requests
'''
导入模块的路径依赖:1. 内建模块 2 sys.path:[当前执行模块的目录,python环境]
'''
2.程序1调用的其他模块——cal
print("cal模块加载")
def add(x, y):
return x + y
def sub(x, y):
return x - y
def mul(x, y):
return x * y
def div(x, y):
return x / y
a = 100
3.程序1调用的其他模块——db
import settings
print("db 模块")
def db_connect():
print("数据库连接 用户名:%s 密码:%s" % (settings.db_user, settings.db_pwd))
def db_close():
print("关闭数据库")
4.程序1调用的其他模块——settings
print("settings 模块")
db_user = "yuan"
db_pwd = "root"
5.正则模块
import re
# 正则表达式:针对字符串做模糊匹配
# s = "hello yuan"
# print(s.find("yuan"))
# s2 = "1,2,34,100,yuan,rain,alvin,45"
# ret = re.findall("[a-z]+", s2)
# print(ret)
#################### 元字符 ####################
# (1) 通配符 .: 默认模式下匹配除了换行符以外的所有符号
# ret = re.findall("y..n", "hello yuan,hello rain,hello yabn")
# ret = re.findall("y..n", "hello yu\nn,hello rain,hello yabn", re.S)
# print(ret)
# (2) 重复: * [0,无穷] +[1,无穷] ?[0,1] {} 指定范围
# 重点:默认贪婪匹配
# 如何取消贪婪匹配
# ret = re.findall("\d", "1,2,3,55,yuan,33")
# ret = re.findall("hi \d{2}", "hi 1,hi 66,hi 188")
# ret = re.findall("hi \d*", "hi 1,hi 66,hi 188")
# ret = re.findall("\d+", "66,188,2,12222,hello")
# ret = re.findall("\d+?", "66,188,2,12222,hello") # 取消贪婪匹配
# ret = re.findall("hi \d?", "hi 1,hi 66,hi 188,hi ") #
# ret = re.findall("hi \d{0,1}", "hi 1,hi 66,hi 188,hi ") #
# ret = re.findall("hi \d{1,}", "hi 1,hi 66,hi 188,hi ") #
# ret = re.findall("hi \d{0,}", "hi 1,hi 66,hi 188,hi ") #
# ret = re.findall("hi \d{1,3}?", "hi 1,hi 66,hi 188,hi ") #
# print(ret)
# (3) ^ $
# ret = re.findall("^good/.{4}/.{4}", "hello/good/food/meat")
# ret = re.findall("^good/.{4}/meat$", "good/aaaa/meat")
# print(ret)
# (4) [] 字符集匹配[]中任意一个符号, 字符集两个特殊符号 - 范围 ^: 取反
# ret = re.findall("yu[ac]n", "yuan yubn yucn yuacn")
# ret = re.findall("yu[a,c]n", "yuan yubn yucn yu,n")
# ret = re.findall("yu[0123456789]n", "yuan yu8n yucn yu2n")
# ret = re.findall("yu[0-9]n", "yuan yu8n yucn yu2n")
# ret = re.findall("[a-z0-9A-Z]+", "yuan,22,alvin,45,rain")
# ret = re.findall("[^0-9]+", "yuan,22,alvin,45,rain")
# print(ret)
# (5) 分组() |
# 取消优先提取 ?:
# ret = re.findall("https?://www\.[a-zA-Z0-9]+\.(?:com|cn)",
# "http://www.baidu.com,https://www.jd.com,http://www.python.cn,")
# print(ret)
# (6) 转义符 \
# 赋予一些普通符号以特殊功能 [0-9] \d \w [0-9a-zA-Z]
# 取消一些特殊符号的特殊功能
ret = re.findall("\d+","123a45bcd678")
print(ret)
6.正则模块2
# 经典组合: .*? 或者 .+?
import re
# ret = re.findall("<div class='c1'>.+?</div>",
# "<div><div class='c1'>yuan</div></div><div><div class='c1'>rain</div></div>")
# print(ret)
f = open("douban.html","r",encoding="utf8")
data = f.read()
# print(data)
ret = re.findall('<div class="item">.*?<span class="title">(.+?)</span>.*?<span class="rating_num".*?>(.+?)</span>',data,re.S)
print(ret)
4万+

被折叠的 条评论
为什么被折叠?



