一周入门Python之day05


活动地址:优快云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)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值