Python全栈开发Day4

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python全栈开发Day4相关的知识,希望对你有一定的参考价值。

Python基础--常用模块


1.什么是模块

      随着代码越写越多,不容易维护,为了编写维护,我们把函数分组,分别放在不同的文件里,一个.py文件就是一个模块(Module)。

2.模块的分类

模块分为三种:

  • 自定义模块   创建一个.py文件,就称之为模块
  • 第三方模块   可以通过pip install 模块名连网安装
  • 内置模块(标准库)执行help(‘module‘)查看只带模块列表

模块的调用

import module
from module.xx.xx import xx
from module.xx.xx import xx as rename 
from module.xx.xx import *

注意:模块一旦被调用,即相当于执行了另外一个py文件里的代码

模块查找路径

import sys
print(sys.path)

输出

[C:\\Users\\Administrator\\PycharmProjects\\untitled1\\xdlj\\crm, C:\\Users\\Administrator\\PycharmProjects\\untitled1, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\DLLs, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages]
>>> import random
>>> random.randint(10,99)  #随机取两位数包括99
89
>>> random.randint(10,99)
84
>>> random.randint(10,99)
37
>>> random.randint(10,99)
60
>>>

      https://pypi.python.org/pypi  是python的开源模块库

3.time &datetime模块

时间相关的操作,时间有三种表示方式:

  • 时间戳               1970年1月1日之后的秒,即:time.time()
  • 格式化的字符串    2014-11-11 11:11,    即:time.strftime(‘%Y-%m-%d‘)
  • 结构化时间          元组包含了:年、日、星期等... time.struct_time    即:time.localtime()

 time.time()  #当前时间戳

>>> import time
>>> time.time()
1522402027.3797266   
>>> time.time()
1522402029.2438338
>>> time.time()
1522402030.6839154
 
time.localtime()   #将一个时间戳转换为当前时区的 struct_time
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=30, tm_hour=17, tm_min=33, tm_sec=12, tm_wday=4, tm_yday=89, tm_isdst=0)
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=30, tm_hour=17, tm_min=33, tm_sec=19, tm_wday=4, tm_yday=89, tm_isdst=0)
>>>
 
time.mktime  #将struct_time转换为时间戳
>>> a = time.localtime()
>>> a
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=30, tm_hour=17, tm_min=44, tm_sec=38, tm_wday=4, tm_yday=89, tm_isdst=0)
>>> time.mktime(a)
1522403078.0
>>>
 
time.gmtime()    #跟localtime()方法一样,gmtime()方法是将一个时间戳转化为UTC时区
>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=30, tm_hour=9, tm_min=38, tm_sec=41, tm_wday=4, tm_yday=89, tm_isdst=0)
>>> time.gmtime()
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=30, tm_hour=9, tm_min=39, tm_sec=23, tm_wday=4, tm_yday=89, tm_isdst=0)
>>>
 
time.strptime(‘%Y-%m-%d‘) #转换为格式化的时间字符串
>>> time.strftime(%Y-%m-%d)
2018-03-30
>>> time.strftime(%Y-%m-%d %H:%M:%S)
2018-03-30 18:05:19
>>>
 
time.sleep(10) #线程推迟到10秒后运行  
 
time.asctime()
>>> time.asctime()
Fri Mar 30 17:46:25 2018
>>>
 
time.ctime()
>>> time.ctime()
Fri Mar 30 17:48:12 2018
>>> time.ctime(123123)
Fri Jan  2 18:12:03 1970
>>>

 

time.strptime()    #把一个格式时间字符串转换为struct_time。

>>> s = time.strftime(%Y-%m-%d %H:%M:%S)
>>> s
2018-03-30 18:14:57
>>> time.strptime(s,%Y-%m-%d %H:%M:%S)
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=30, tm_hour=18, tm_min=14, tm_sec=57, tm_wday=4, tm_yday=89, tm_isdst=-1)
>>>

4.datetime模块

时间运算

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2018, 3, 30, 20, 21, 26, 880941)
>>>
datetime.datetime(2018, 3, 30, 20, 26, 16, 960511)
>>> datetime.datetime.now() + datetime.timedelta(4)#当前时间加4天
datetime.datetime(2018, 4, 3, 20, 27, 34, 736997)
>>>
>>> datetime.datetime.now()
datetime.datetime(2018, 3, 30, 20, 31, 35, 288874)
>>> datetime.datetime.now() + datetime.timedelta(hours = 4)#当前时间加4小时
datetime.datetime(2018, 3, 31, 0, 31, 44, 257390)
>>>

时间替换

>>> a = datetime.datetime.now()
>>>
>>> a = datetime.datetime.now()
>>> a
datetime.datetime(2018, 3, 30, 20, 34, 29, 480925)
>>> a.replace(year = 2999,month = 11 ,day = 30)
datetime.datetime(2999, 11, 30, 20, 34, 29, 480925)
>>>

4.random模块

程序中很多地方用到随机字符,通过random模块很容易产生随机字符串

技术分享图片
>>> import random  
>>> random.randint(1,100)   #1-100的随机数,包括10
48
>>>
>>> random.randint(1,100)
67
>>> random.randint(1,100)
29
>>> random.randint(1,100)
65
>>> random.randrange(1,100) #1-100的随机数,不包括10
29
>>> random.randrange(1,100)
3
>>> random.random()#返回一个浮点数
0.861331996925364
>>> random.random()
0.09635457023458294
>>> random.choice([email protected];ld)#返回一个给定数集合的随机数
d
>>> random.choice([email protected];ld)
@
>>> random.choice([email protected];ld)
d
>>> random.choice([email protected];ld)
4
>>> random.sample(aldsrtvpq,3)#从多个数值中选取特定字符
[r, a, t]
>>> random.sample(aldsrtvpq,3)
[s, a, d]
>>> random.sample(aldsrtvpq,3)
[t, a, v]
>>> import string
>>> string.digits#0到9的数10进制
0123456789
>>> string.ascii_letters#26个字母大小写
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
>>> string.hexdigits#16进制
0123456789abcdefABCDEF
>>> string.octdigits#8进制
01234567
>>> string.ascii_lowercase#26字母小写
abcdefghijklmnopqrstuvwxyz
>>> s = string.ascii_lowercase + string.digits
>>> s
abcdefghijklmnopqrstuvwxyz0123456789
>>> ‘‘.join(random.sample(string.ascii_lowercase + string.digits,6))
i986wb
>>>
>>> ‘‘.join(random.sample(s,4))
7eo9
>>> ‘‘.join(random.sample(s,4))
g9bk
>>> ‘‘.join(random.sample(s,4))
tpzg
>>>
>>> d = list(range(100))#0 - 100的数
>>> d
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>> random.shuffle(d)#随机排序
>>> d
[22, 60, 11, 8, 87, 73, 29, 17, 43, 64, 67, 27, 72, 92, 98, 40, 15, 36, 90, 79, 47, 32, 51, 12, 50, 23, 88, 4, 16, 13, 56, 18, 2, 96, 95, 45, 66, 65, 10, 1, 62, 81, 99, 46, 78, 3, 70, 25, 19, 77, 93, 42, 58, 39, 0, 34, 28, 35, 7, 31, 37, 54, 89, 26, 44, 57, 94, 59, 24, 6, 52, 75, 5, 38, 84, 85, 30, 9, 20, 33, 71, 41, 49, 21, 97, 69, 68, 82, 74, 14, 61, 86, 53, 63, 80, 83, 91, 55, 76, 48]
>>>
View Code

5.os模块

技术分享图片
os.getcwd()                 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")         改变当前脚本工作目录;相当于shell下cd
os.curdir                   返回当前目录: (.)
os.pardir                   获取当前目录的父目录字符串名:(..)
os.makedirs(dir1/dir2)    可生成多层递归目录
os.removedirs(dirname1)   若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir(dirname)         生成单级目录;相当于shell中mkdir dirname
os.rmdir(dirname)         删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir(dirname)       列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()                 删除一个文件
os.rename("oldname","new")  重命名文件/目录
os.stat(path/filename)    获取文件/目录信息
os.sep                      操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep                  当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep                  用于分割文件路径的字符串
os.name                     字符串指示当前使用平台。win->nt; Linux->posix
os.system("bash command")   运行shell命令,直接显示
os.environ                  获取系统环境变量
os.path.abspath(path)       返回path规范化的绝对路径
os.path.split(path)         将path分割成目录和文件名二元组返回
os.path.dirname(path)       返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)      返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)        如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)         如果path是绝对路径,返回True
os.path.isfile(path)        如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)         如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)      返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)      返回path所指向的文件或者目录的最后修改时间
View Code

6.sys模块

技术分享图片
>>> import sys
>>> sys.argv#命令形参数List,第一个元素是程序本身路径
[‘‘]
>>> sys.exit(0)#退出程序

>>> sys.version#获取Python解释程序的版本信息
3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]

>>> sys.path#返回模块的搜索路径
[‘‘, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\DLLs, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages]

>>> sys.platform #返回操作系统的平台名称
win32

>>> sys.stdout.write(please:)#标准输出 输出字符个数
please:7

>>> sys.maxsize#最大的int值
9223372036854775807
>>> sys.stdout
<_io.TextIOWrapper name=<stdout> mode=w encoding=utf-8>
>>> sys.stdin.readline()
aa
aa\n
>>> sys.getrecursionlimit()#获取最大的递归层数
1000
>>> sys.getrecursionlimit(1200)#设置最大的递归层数

>>> sys.getdefaultencoding()#获取解释器的默认编码
utf-8

>>> sys.getfilesystemencoding#获取内存数据存到文件里的默认编码
<built-in function getfilesystemencoding>
>>>
View Code

7.shutil模块

shutil.copyfileobj(fsrc, fdst[, length])
将文件内容拷贝到另一个文件中

import shutil

shutil.copyfileobj(open(old.py,r),open(new.py,w))

shutil.copyfile(src, dst)

拷贝文件

import shutil

shutil.copyfile(
old.txt,new.txt)

shutil.copymode(src, dst)
仅拷贝权限。内容、组、用户均不变

import shutil

shutil.copymode(old.txt, ‘new.txt)

shutil.copystat(src, dst)
仅拷贝状态的信息,包括:mode bits, atime, mtime, flags

import shutil

shutil.copystat(‘old.txt, ‘new.txt)

shutil.copy(src, dst)
拷贝文件和权限

mport shutil
 
shutil.copy(‘old.txt, ‘new.txt‘)

shutil.copy2(src, dst)
拷贝文件和状态信息

import shutil
 
shutil.copy2(old.txt, ‘new.txt)

shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件夹

import shutil
 
shutil.copytree(‘file1, file2, ignore=shutil.ignore_patterns(*.pyc, tmp*))

shutil.rmtree(path[, ignore_errors[, onerror]])
递归的去删除文件

import shutil
 
shutil.rmtree(file1)

shutil.move(src, dst)
递归的去移动文件,它类似mv命令,其实就是重命名。

import shutil
 
shutil.move(file1, ‘file3)

shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

  • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
    如:www                        =>保存至当前路径
    如:/Users/xiaoqian/www =>保存至/Users/xiaoqian/
  • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
  • root_dir: 要压缩的文件夹路径(默认当前目录)
  • owner: 用户,默认当前用户
  • group: 组,默认当前组
  • logger: 用于记录日志,通常是logging.Logger对象

8.序列化

Python中用于序列化的两个模块

  • json     用于【字符串】和 【python基本数据类型】 间进行转换
  • pickle   用于【python特有的类型】 和 【python基本数据类型】间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

dump ,dumps :把内存数据转换成字符,叫序列化

load, loads:把字符串转换成数据类型 叫反序列化

只能dump ,load一次

技术分享图片json
技术分享图片pickle
import pickle

# d = {‘name‘:‘qian‘,‘age‘:22}
#
# l = {1,2,3,4,‘rain‘}
#
# pk = open("data.pkl",‘wb‘)#写二进制用wb
# pickle.dump(d,pk)

f = open("data.pkl",rb)

d = pickle.load(f)
print(d)

json:

优点:跨语言、体积小

缺点:只支持 int\str\list\tuple\dict

pickle:

优点:专为python设计,支持python所有的数据类型

缺点:只能在python中使用,存数据占空间大

9.shelve模块

shelve模块是一个简单的 k , v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的Python数据格式

技术分享图片序列化
技术分享图片
import shelve
d = shelve.open(shelev_text)
print(d["names"])
print(d[info])
#del d[‘test‘]#删除
反序列化

 10.xml模块

 xml是实现不同语或程序之间进行分析

技术分享图片
<?xml version="1.0"?>
<data>
    <country name="Liechtenstein">
        <rank updated="yes">2</rank>
        <year>2023</year>
        <gdppc>141100</gdppc>
        <neighbor direction="E" name="Austria" />
        <neighbor direction="W" name="Switzerland" />
    </country>
    <country name="Singapore">
        <rank updated="yes">5</rank>
        <year>2026</year>
        <gdppc>59900</gdppc>
        <neighbor direction="N" name="Malaysia" />
    </country>
    <country name="Panama">
        <rank updated="yes">69</rank>
        <year>2026</year>
        <gdppc>13600</gdppc>
        <neighbor direction="W" name="Costa Rica" />
        <neighbor direction="E" name="Colombia" />
    </country>
</data>
xml
技术分享图片遍历
from xml.etree import ElementTree as ET

tree = ET.parse("123")#open
root = tree.getroot()#f.seek(0)
#print(dir(root))
print(root.tag)
#遍历xml文档
# for child in root:
#     print(child.tag,child.attrib)
#     for i in child:
#         print(i.tag,i.text)


for node in root.iter(year):
    print(node.tag,node.text)

技术分享图片
from xml.etree import ElementTree as ET

tree = ET.parse("123")#open
root = tree.getroot()#f.seek(0)

for node in root.iter(year):
    new_year = int(node.text)+1
    node.text = str(new_year)
    node.set("attr_text","yes")
tree.write("123")
修改
技术分享图片
from xml.etree import ElementTree as ET

tree = ET.parse("123")#open
root = tree.getroot()#f.seek(0)

for country in root.findall("country"):
    rank = int(country.find(rank).text)
    if rank > 50:
        root.remove(country)
tree.write(ountpot.xml)
删除

自动创建xml文档

技术分享图片
import xml.etree.ElementTree as ET

root = ET.Element("namelist")
name = ET.SubElement(root,"name",attrib={"enrolled":"yes"})
age = ET.SubElement(name,"age",attrib={"checked":"no"})
sex = ET.SubElement(name,"sex")
sex.text = amle

name2 = ET.SubElement(root,"name",attrib={"enrolled":"no"})

age = ET.SubElement(name2,"age")
age.text = 19

et = ET.ElementTree(root)
et.write("build_out.xml",encoding="utf-8",xml_declaration=True)
View Code

11.configparser模块

configparser用于处理特定格式的文件,其本质上是利用open来操作文件。

 1、获取所有节点

技术分享图片
import configparser

config = configparser.ConfigParser()
config.read(ss.ini, encoding=utf-8)
ret = config.sections()
print(ret)
View Code

2、获取指定节点下所有的键值对

技术分享图片
import configparser

config = configparser.ConfigParser()
config.read(ss.ini,encoding="utf-8")
ret = config.items(section1)
print(ret)
View Code

3、获取指定节点下所有的建

技术分享图片
import configparser

config = configparser.ConfigParser()
config.read(ss.ini,encoding="utf-8")
ret = config.options(section1)
print(ret)
View Code

4、获取指定节点下指定key的值

技术分享图片
import configparser

config = configparser.ConfigParser()
config.read(ss.ini,encoding="utf-8")
ret = config.get(section1,k1)
print(ret)
View Code

5、检查、删除、添加节点

技术分享图片
import configparser
 
config = configparser.ConfigParser()
config.read(ss.ini, encoding=utf-8)
 
# 检查
has_opt = config.has_option(section1, k1)
print(has_opt)
 
# 删除
config.remove_option(section1, k1)
config.write(open(ss.ini, w))
 
# 设置
config.set(section1, k10, "123")
config.write(open(ss.ini, w))
View Code

 12.hashlib模块

用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

技术分享图片
import  hashlib

hash = hashlib.md5()

hash.update(bytes(xiaoqian,encoding=utf-8))
print(hash.hexdigest()) #md5值
print(hash.digest())
View Code

 13.subprocess模块

sucprocess.Popen()#上面各种方法的底层封装

run()方法

标准写法

subprocess.run([df,-h],stderr = subprocess.PIPE,stubprocess.PIPE,check = True)

涉及到管道|的命令需要这样写

shbprocess.run(df -h|grep disk1,shell = True)#shell = True的意思是这条命令直接交给系统去执行,不需要python负责解析。

Popen()方法

   args:shell命令,可以是字符串或者序列类型

   stdin, stdout,stderr:分别表示程序的标准输入、输出、错误句柄

   preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用

   shell:同上

   cwd:用于设置子进程的当前目录

   env: 用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承 

14.logging模块 

logging的日志可以分为 debug(),info(),warning(),error()and critical()五个级别

简单用法·

import logging

logging.warning("user[xiaoqian] attempted wrong passwold more than 3 time")
logging.critical("server is down")

输出

WARNING:root:user[xiaoqian] attempted wrong passwold more than 3 time
CRITICAL:root:server is down

 

技术分享图片
import logging

logging.basicConfig(filename=log_test.log,
                    level=logging.DEBUG,
                    format=%(asctime)s:%(levelname)s:%(filename)s:%(funcName)s:%(lineno)d:%(process)d %(message)s,
                    datefmt=%Y-%m-%d %I:%M:%S %p)


def sayhi():
    logging.error("from sayhi....")

sayhi()
logging.debug(This message should go to the log file)
logging.info(So should this)
logging.warning(And this, too)
View Code

formatter 组件

技术分享图片
import logging
fh = logging.FileHandler("access.log")
formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s)
fh.setFormatter(formatter)
View Code

15.re模块

联系方式

姓名	地区	身高	体重	电话

张三 	北京	171	48	13651054608

李四	上海	169	46	13813234424

王五	深圳	173	50	13744234523

赵六	广州	172	52	15823423525

小七 	北京	175	49	18623423421

老八	北京	170	48	18623423765
 
技术分享图片
import re

f = open("联系方式",r,encoding="utf-8")

data = f.read()
phones = re.findall("[0-9]{11}", data)

print(phones)
View Code
‘*‘ 重复零次或更多次
‘^‘匹配字符开头
‘$‘匹配字符结尾
‘*‘匹配*号前的字符0次或多次
‘+‘ 重复一次或更多次
‘?‘ 重复零次或一次
‘{n}‘	重复n次
‘{n,m}‘ 重复n到m次
‘|‘匹配|左或|右的字符
‘(...)‘分组匹配
‘\A‘只从字符开头匹配
‘\Z‘匹配字符结尾,同$
‘\d‘匹配数字0-9
‘\D‘匹配非数字
‘\w‘匹配[A-Za-z0-9]
‘\W‘匹配非[A-Za-z0-9]
‘\s‘匹配空白字符,\t, \n, \r
‘(?P<name>)‘ 分组匹配

  

re.match从头开始匹配
re.search匹配包含
re.findall把所有匹配到的字符放到以列表中的元素返回
re.split以匹配到字符当做列表分隔符
re.sub匹配字符并替换
re.fullmatch全部匹配

 re.compile(pattern, flage = 0)

    re.match(pattern, string,flage = 0)

    

pattern正则表达式
string 要匹配的字符
flags 标志位,用于控制正则表达式的匹配方式

 

技术分享图片
obj = re.match(\d+,123abc)
if obj:
    print(obj.group())
View Code

 

Flags标志符

re.|(re.IGNORECASE):忽略大小写
M(MULTILINE):多行模式,改变‘^’和‘$’的行为
S(DOTALL):改变‘.‘的行为
X(re.VERBOSE)可以给你的表达式,使其更可读

  re.search(pattern,string,flags = 0)

技术分享图片
import re
obj = re.search(\d+,u123uu888asf)
if obj:
    print(obj.group())
View Code

       re.findall(pattern,string,flags = 0)

技术分享图片
import re
obj = re.findall(\d+,u123uu888asf)
if obj:
    print(obj)
View Code

      re.sub(pattern,repl,string,count = 0,flags = 0)

>>> re.sub(‘\d+‘,‘|‘,‘xaioqian123xiaobai33hhh555‘,count = 2)
‘xaioqian|xiaobai|hhh555‘

  re.split(pattern,string,maxsplit = 0,flags = 0)

>>> s = ‘1-2*5/3+7/3*99/4*2998+10*514/44‘
>>> re.split(‘[\*\-\/\+]‘,s)
[‘1‘, ‘2‘, ‘5‘, ‘3‘, ‘7‘, ‘3‘, ‘99‘, ‘4‘, ‘2998‘, ‘10‘, ‘514‘, ‘44‘]
>>>

  re.fullmatch(pattern,string,flags = 0)

re.fullmatch(‘\[email protected]\w\.(com|cn|edu)‘,"[email protected]")

  

 

















以上是关于Python全栈开发Day4的主要内容,如果未能解决你的问题,请参考以下文章

Python全栈开发day4

Python全栈-day4

python全栈学习--day4

python 函数之day4

Day4 - Python基础4 迭代器装饰器软件开发规范

day4.初识python