概述
##1,python的模块
python内置的模块:or模块,re模块,time,time,
模块(modules):变量,函数,类,放入一个py文件中,可以让其他的文件调用:一个py文件叫一个脚本,可以单独运行使用
模块导入:
import 模块名字
###导入自定义的模块:执行这句导入的代码,模块里面所有的程序都会执行一遍
import look1
"""提取出自定义模块中的所有代码程序"""
使用模块的优点
1,不用重复的定义函数,可以重复使用定义好的函数,变量,类
2,避免命名冲突
3,使用模块中的函数,调用方法:模块名.变量名 模块名.函数名
###使用from…import…方式导入
这里导入的变量将上边的变量进行重新赋值
from look1 import *
from function_tools import *
# * 代表模块内所有的变量,函数,类
print(a(),b())
print(add(1,1))
print(Student.__name__)
"""李四 18 15136282191
function_tools模块的函数
109
45 是奇数
李四 18 15136282191
function_tools模块的函数
2
Student"""
###导入后起别名
import function_tools
import function_tools as ft
print(ft.name, ft.age, ft.phone, ft.Student)
ft.odd(80)
print(function_tools.name)
"""李四 18 15136282191 <class 'function_tools.Student'>
80 是偶数
李四
"""
###导入python的内置模块,导入多个模块,逗号隔开
import os,time, datetime,functools
print(os.name)
print(time.time())# 时间戳
"""nt
1649394012.8511057"""
###模块搜索
1,自定义模块(优先使用)
2,python内置函数
3,第三方的模块(需要下载安装)
查找顺序,1 - 当前目录 2- 到环境变量目录下查找 3- python默认安装目录地址查找
# import math #数学模块,里面数学相关的函数
# print(math,name)
import sys
print(sys.path)
"""['D:\学习\python\python笔记\python运行文件\日常练习', 'D:\学习\python\python笔记\python运行文件', 'D:\学习\python\python笔记\python运行文件\日常练习\第6周学习文件', 'D:\学习\python\python笔记\python运行文件\日常练习\6(2).第六周-模块使用', 'D:\学习\python\python笔记\python运行文件\日常练习\6(2).第六周-模块使用\tools', 'C:\Users\zyz\AppData\Local\Programs\Python\Python38-32\python38.zip', 'C:\Users\zyz\AppData\Local\Programs\Python\Python38-32\DLLs', 'C:\Users\zyz\AppData\Local\Programs\Python\Python38-32\lib', 'C:\Users\zyz\AppData\Local\Programs\Python\Python38-32', 'C:\Users\zyz\AppData\Local\Programs\Python\Python38-32\lib\site-packages']"""
##python程序的包结构
###包:就是将一堆模块放入目录下,这个目录含有文件,init.py
创建一个tools包,包含文件叫__int__.py
在导入包的时候,init文件里面内容第一执行,初始化文件
import tools.function_tools
tools.function_tools.odd(number=20)
"""这个是包里面init文件
20 是偶数"""
###直接导入包里面的模块,模块命名冲突时起一个别名
from tools import function_tools as ft
print(ft.name)
import function_tools
print(function_tools.name)
print(ft.name)
"""这个是包里面init文件
张三
李四
张三"""
###导入其他模块
自定义模块,内置模块,第三方安装
import random # 随机数
print(random.randint(0,10))
z = ["石头", "剪刀", "布"]
# we = input("输入:")
print(random.choices(z)[0])
"""0
布"""
###标准库: 官方认可的库
sys: 模块与python解释器和环境操作相关
os: 操作我们当前操作系统的目录
time: 操作时间, 处理时间格式
datetime: 操作日期
calendar: 操作日期
urllib: 请求网页获取数据
json: 处理json数据, 序列化, 反序列
re: 正则表达式, 精准匹配字符串使用
math: 与数学运算有关, 数学相关的函数
shutil:用于高级文件操作, 复制, 移动, 重命名
tkinter: 用于GUI编程模块
random: 生成随机数
第三方模块下载安装
- 第一种安装方式, pip install 模块名字 (requests, numpy, pymysql)
默认从官方网站下载安装
pip install 模块名 -i https://pypi.douban.com/simple/ - 第二种安装, 使用pycharm安装功能
##os 模块
###os模块:处理系统的目录
import os
# os 里面的变量
# 1name: 获取操作系统的名字, windows是nt, linux系统, Unix系统, Mac OS是 posix
name = os.name
print(name)
"""nt
"""
###linesep: 获取系统的换行符; window系统是 ‘rn’, linux系统是 “n”
import os
lp = os.linesep
print(lp)
"""
"""
###sep: 获取系统路径的分割符号, window, linux 路径分割符号是
import os
sep = os.sep
print(sep)
"""
"""
##os里面的函数
1. getcwd(): 获取当前工作环境的路径, 类比linux的pwd命令
import os
cwd = os.getcwd()
print(cwd)
"""D:学习pythonpython笔记python运行文件日常练习
"""
2. mkdir(): 创建一个空目录, 如果目录存在会报错
import os
os.mkdir("abc")
os.mkdir(path=r"D:学习pythonpython笔记python运行文件日常练习6(3).第六周-模块使用新目录")
"""abc 新目录"""
###3 makedirs(): 创建多级目录, 创建目录存在会报错
import os
os.makedirs("a/b/c")
"""a/b/c"""
###4. chdir(): 切换当前工作环境的目录
import os
os.chdir(r"D:学习pythonpython笔记python运行文件日常练习3.文件写入.py")
cwd1 = os.getcwd()
print(cwd1)
""""""
###5. rmdir(): 删除单个空目录, 删除的目录如果找不到会报错
import os
os.rmdir("abc")
""""""
###6. removedirs(): 删除多级目录, 目录不存在会报错
import os
os.removedirs("a/b/c")
""""""
###7. listdir(): 查看某个路径下边的文件和目录的信息, 返回一个列表, 每个元素是文件和目录名字
import os
cwd2 = os.getcwd()
ld = os.listdir(path=cwd2)
print(ld)
""""""
###8. walk(): 遍历目录树, 返回一个元组, 有三个元素, 路径名, 目录列表, 文件列表
import os
res = os.walk(r"C:Users")
print(res)
""""""
###9. remove(): 删除指定的文件, 若不存在会报错
import os
os.remove("math.py")
""""""
###10. rename(): 重新命名文件或目录, 新名字如果存在会报错
import os
os.rename("猜拳游戏.py", "自定义游戏.py")
""""""
###11. stat(): 返回文件的系统相关的信息
import os
res = os.stat("function_tools.py")
print(res)
""""""
###12. copyfile(): 在shuil模块里的函数, 复制文件
import os
import shutil
shutil.copyfile("function_tools.py", "ft.py")
""""""
##os.path模块
操作目录的模块
###1. abspath(): 返回文件或目录的绝对路径
import os
abs = os.path.abspath("ft.py")
print(abs)
""""""
###2. exists(): 判断目录或者文件是否存在, 存在返回True
删除文件, 存在再删除
import os
if os.path.exists("ft.py"):
os.remove("ft.py")
else:
print("不存在这个文件")
# 创建文件, 文件不存在创建
if os.path.exists("news.txt"):
print("已经存在")
else:
open("news.txt", "w", encoding="utf-8")
""""""
###3. join(): 拼接路径与目录或文件名字, 组成绝对路径
import os
cwd = os.getcwd()
absurl = os.path.join(cwd, "new.py")
print(absurl)
""""""
###4. split(): 指定文件或目录进行切割, 将名字切出来, 结果放入元组中
import os
cwd = os.getcwd()
res = os.path.split(cwd)
print(res)
""""""
###5. splitext(): 将文件的拓展名进行切割
import os
res2 = os.path.splitext(r"C:UsersZGSDesktopAI2班课件6.第六周-模块使用news.txt")
print(res2)
""""""
###6. basename(): 从路径中提取目录或文件名字
import os
cwd = os.getcwd()
name = os.path.basename(cwd)
print(name)
""""""
###7. dirname(): 从路径中提取文件的路径, 不包括文件名字
import os
cwd = os.getcwd()
name2 = os.path.dirname(cwd)
print(name2)
""""""
###8.isdir(): 判断是否为路径, 判断是否为目录
import os
cwd = os.getcwd()
print(os.path.isdir("abc/ert/a"))
print(os.path.isdir(cwd))
""""""
###9.isfile(): 判断是否为文件
import os
print(os.path.isfile("news.txt"))
print(os.path.isfile("tools"))
""""""
练习, 将一个目录中所有的py文件进行统计, 应该有多少
import os
def countpy(path):
pylist = []
if os.path.isdir(path):
allfile = os.listdir(path)
for f in allfile:
if os.path.isfile(f) and ".py" == os.path.splitext(f)[-1]:
pylist.append(f)
print(pylist)
return len(pylist)
n = countpy(path=r"C:UsersZGSDesktopAI2班课件6.第六周-模块使用")
print(n)
""""""
##random模块
生成随机数, 做随机选择使用
###1. randint(a, b): 产生一个[a, b]的随机整数
import random
n = random.randint(1, 9)
print(n)
""""""
###2. random(): 产生一个[0, 1)之间的一个随机浮点数
import random
f = random.random()
print(f)
""""""
3. randrange(start, stop, step): 在[start, stop]之间以step步长产生一个随机数
import random
res = random.randrange(0, 10, 2) # 相当于在 [0, 2, 4, 6, 8]
res1 = random.randrange(1, 10, 2)
print(res)
print(res1)
""""""
###4. sample(list, k): 在序列中随机取出k个元素, 以列表形式返回
import random
list1 = random.sample([1,2,3,4,5,6,7], k=3)
print(list1)
""""""
###5. seed(): 改变随机生成器的种子, 默认的参数是系统的时间
import random
import time
print(time.time()) # 时间戳
# random.seed(0)
for i in range(10):
print(random.randint(1, 9))
""""""
###6. shuffle(): 打乱序列中的元素
import random
card = [c for c in range(1, 11)]
card.extend(["J", "Q", "K"])
print(card)
random.shuffle(card)
print(card)
""""""
###7. uniform(a, b): 在[a, b]范围内产生随机浮点数
import random
ff = random.uniform(1.23, 2.33333)
print(ff)
""""""
###8. choice(): 从序列表随机选取一个元素返回
import random
v = random.choice(["石头", "剪刀", "布"])
print(v)
""""""
###9. choices(sep, k): 从序列中随机抽取多个元素放入列表返回
import random
list2 = random.choices(list(range(10)), k=2)
print(list2)
""""""
###10. getrandbits(k): 产生一个k比特长度的随机数
import random
res10 = random.getrandbits(3)
print(res10)
""""""
练习: 生成随机的验证码, 可以定义生成验证码长度, 验证码包含, 数字与字母(区分大小写)
import random
def yanzm(length):
az = [chr(i) for i in range(65, 91)]
AZ = [chr(j) for j in range(97, 123)]
num = [str(n) for n in range(0, 10)]
lt = az + AZ + num
yan = ""
for n in range(length):
s = random.choice(lt)
yan += s
return yan
print(yanzm(4))
def zy():
checkcode = ""
for i in range(4):
k = random.randint(0, 3)
if k == i:
b = chr(random.randint(65, 90))
else:
b = random.randint(0, 9)
checkcode += str(b)
print(checkcode)
""""""
##re模块
re模块: 正则表达式, 使用一定的规则(一些符号组合)去匹配一个目标字符串, 得到我们想要的字符串
n r: 换行符 t: 制表符
###1. d: 用来匹配字符串中一个数字 0-9
构建一个正则表达式
import re
pattern = re.compile(pattern="d", flags=0)
# 使用正则匹配
# match(): 根据正则表达式匹配字符串,从字符串开头位置进行匹配, 第一个参数pattern: 正则表达式, 第二个参数string: 目标字符串, 第三个参数flags, 默认是0; 返回一个对象, 可以通过方法group() 取值
res = re.match(pattern=pattern, string="123", flags=0)
print(res.group(0))
res1 = re.match(pattern="d", string="2abc")
print(res1.group(0))
""""""
###2. w: 用来匹配字符串中一个数字或字母(大小写)
import re
res2 = re.match(pattern="w", string="abc")
print(res2.group(0))
""""""
###3. 针对性匹配, 要匹配特定的字母, 数字, 符号
import re
res3 = re.match(pattern="a2", string="a279")
print(res3.group(0))
res31 = re.match(pattern="ad", string="a023")
print(res31.group(0))
res32 = re.match(pattern="aw", string="aSf23")
print(res32.group(0))
""""""
###4. 点 . 可以匹配任意一个字符 字母, 数字, 符号…
import re
res4 = re.match(pattern=".", string="*bc123")
print(res4.group(0))
res41 = re.match(pattern=".dw", string="-312")
print(res41.group(0))
""""""
###5. + 可以匹配+前字符任意多个
import re
res5 = re.match(pattern="a+", string="aaaaaaljl123")
print(res5.group(0))
# .+ 可以匹配任意多个任意字符
res51 = re.match(pattern=".+", string="abcjj-=#$%^&*(|")
print(res51.group(0))
""""""
###6. * 可以匹配多个字符
import re
res6 = re.match(pattern="a*", string="aaaaab")
print(res6.group(0))
res61 = re.match(pattern="d*", string="124532abc")
print(res61.group(0))
# .* ; .+ 可以匹配任意多个任意字符, 叫做贪婪匹配
res62 = re.match(pattern=".*", string="-=138059$%^&*(")
print(res62.group(0))
""""""
###7. ? 可以匹配前边的字符0次或者1次, a?; 可以匹配到也可以匹配不到
import re
res7 = re.match(pattern="a?", string="bc123")
print(res7.group(0))
res71 = re.match(pattern=".?", string="1hgiihro")
print(res71.group(0))
""""""
###8. ^ 上尖号, 匹配以什么开头的字符串
import re
res8 = re.match(pattern="^qwer", string="qwer1243")
print(res8.group(0))
res81 = re.match(pattern="^q.*2", string="qwer1243")
print(res81.group(0))
""""""
###9. $ , 匹配以什么结尾的字符串
import re
res9 = re.match(pattern=".*00$", string="12345678900")
print(res9.group(0))
""""""
###10 | 连接两个正则表达式, 或, 符合两个正则其中一个
import re
res10 = re.match(pattern="d+|w*", string="a123abe-=")
print(res10.group(0))
""""""
##re匹配函数
###1. match(): 从字符串开头进行匹配, 匹配成功返回一个对象, 匹配不成功返回None
import re
res1 = re.match(pattern="abcdw+", string="1abc123jla")
print(res1.group(0))
""""""
###2. search(): 从字符串任意位置进行匹配, 如果匹配成功返回, 如果有多个结果只返回一个
import re
res2 = re.search(pattern="abcdw+", string="1abc123jla+abc2abc")
print(res2.group(0))
""""""
###3. findall(): 匹配字符串找到所有符合条件的子字符串, 返回一个列表
.*? : 非贪婪匹配
import re
res3 = re.findall(pattern="a.*?z", string="123acz67a0z---a+z")
print(res3)
""""""
###4. split(): 按照一定格式, 对字符串进行分割, 返回一个列表
import re
res4 = re.split(pattern="d", string="abc1hfdsoh23jlj8_0_")
print(res4)
""""""
###5. sub(): 一个新的字符替换一个旧的字符
import re
res5 = re.sub(pattern="d", repl="-", string="ab1cd3ef8gh0")
print(res5)
""""""
##正则中的括号
###1. {n}: 匹配{}前边字符出现的次数, 匹配n次
import re
res1 = re.search(pattern="@{3}", string="1@23@@@1234@@456")
print(res1.group(0))
# {n,}: 至少匹配n次
res2 = re.findall(pattern="j{1,}", string="jsdfghjjj123jjjjjjj")
print(res2)
# {n,m}: 最少匹配n次, 最多匹配m次
res3 = re.findall(pattern="c{1,3}", string="c, abcc, cccccc")
print(res3)
""""""
###2. []: 表示匹配的范围, d匹配一个数字, [0-9]表示匹配的数字0到9
import re
# [0-9]: 匹配0到9中一个数字
res4 = re.findall("[0-9]", string="123abc890jl8lkj7h6")
print(res4)
res5 = re.findall("[0-9]{1,30}", string="123abc890jl8lkj7h6")
print(res5)
# [a-zA-Z]: 匹配字母, 无论大小写字母
res6 = re.findall("[a-zA-Z]{1,3}", string="123abc890jl8lkj7h6ABC")
print(res6)
# [0-9a-zA-Z]: 匹配数字, 小写字母, 大写字母
res7 = re.findall("[a-zA-Z0-9]{1,3}", string="123abc890jl8lkj7h6ABC")
print(res7)
# [^0-9]: 出去0-9之外的都可以
res8 = re.findall("[^a-zA-Z0-9]{1,3}", string="123abc89%%0jl**8lkj7h6ABC")
print(res8)
""""""
###3. (): 表示括号中是可以单独取出来的数据, 使用 | 将不同的正则或连接
import re
res9 = re.findall("张(.)强", string="张强, 张小强, 张大强, 苏大强, 刘华强, 许文强")
print(res9)
res10 = re.search(pattern="姓名叫(.{1,10})年龄([0-9]{1,3})", string="我的姓名叫罗翔年龄48, 外号张三")
print(res10.group(0))
# group(0): 匹配真个正则匹配内容, group(1): 我们定义第一个()匹配到的内容 group(2)是第二个()内容
print(res10.group(1))
print(res10.group(2))
# groups(): 将所有()内匹配到的内容放入元组返回
print(res10.groups())
""""""
练习: 使用正则, 匹配qq号; qq: 6-10, 不能以0开头
import re
res = re.search(pattern="^[1-9][0-9]{5,9}$", string="123456789")
if res:
print(res.group(0))
else:
print("字符串不是qq")
""""""
最后
以上就是勤劳皮卡丘为你收集整理的模块使用方法.*? : 非贪婪匹配的全部内容,希望文章能够帮你解决模块使用方法.*? : 非贪婪匹配所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复