我是靠谱客的博主 勤劳皮卡丘,最近开发中收集的这篇文章主要介绍模块使用方法.*? : 非贪婪匹配,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

##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: 生成随机数

第三方模块下载安装

  1. 第一种安装方式, pip install 模块名字 (requests, numpy, pymysql)
    默认从官方网站下载安装
    pip install 模块名 -i https://pypi.douban.com/simple/
  2. 第二种安装, 使用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")
""""""

最后

以上就是勤劳皮卡丘为你收集整理的模块使用方法.*? : 非贪婪匹配的全部内容,希望文章能够帮你解决模块使用方法.*? : 非贪婪匹配所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部