首页 > 编程语言 >python-05

python-05

时间:2023-03-27 21:11:19浏览次数:47  
标签:匹配 05 python str1 re 模块 print match

python模块的定义;
Python 模块(Module),是一个Python文件,以.py 结尾,包含了Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的Python代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
python中的模块:
1.包和目录的区别,包和模块可以被其他模块导入,但是目录不能被导入
2.新建一个包里面有一个默认__init__.py模块,这个模块是用来初始化当前这个包下的所有内容
3.有__init__.py模块才能称之为包
4.python里面分为自带的模块和自己创建的模块

 

第一种导入模块的方法,直接导入整个模块
time模块中常见的方法:
time()   #1970到现在经过的秒数
import time
print(time.time())         #1678843708.3597147,就是通过模块名.函数名来进行调用
print(time.ctime())          #固定格式的当前时间  Wed Mar 15 09:29:56 2023
time.sleep(3)                #休眠等待3秒   强制等待
print(time.ctime())

asctime()   转化为asc码格式显示
print(time.asctime())         #   Wed Mar 15 09:33:57 2023

strftime()  时间格式化
print(time.strftime('%Y-%m-%d-%H-%M-%S'))      #2023-03-15-09-36-59

localtime() 当地时间
print(time.localtime())    #显示当地时间

 


第二种导入模块方法,导入模块中具体的函数
from time import time    #从time的模块中导入time函数
print(time())

from time import ctime     #从time的模块中导入ctime函数
print(ctime())

from time import sleep      #从time的模块中导入sleep函数
sleep(3)

 


第三种导入模块方法
from time import *
print(time())
print(ctime())
sleep(3)

第四种导入模块的方法。导入具体函数并取别名,不管是函数还是变量、类、常量、对象都可以导入

from time import ctime as a             #给函数取别名为a
print(a())                              #  Wed Mar 15 09:46:18 2023

import os,time,json,sys                 #同时导入多个模块用逗号隔开

第五种导入模块方法,不同层级的模块找上级用.表示
from duoceshi31.test1 import *     #通过包名.模块导入的所有内容(函数),在duoceshi31包建立一个test1.py文件


python中的random模块
生成随机浮点数、整数、字符串、甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等

random模块中的常见用法:
random.random()   #该方法是生成0-1之间的浮点数,但是能取到0,取不到1
import random
print(random.random())

random.randint(x,y)  #该方法生成指定范围内的整数,包括开始和结束值
print(random.randint(1,5))

random.randrange(x,y,step)   #生成指定范围内的奇数,不包括结束值
print(random.randrange(1,10,2))     #random.randrange与普通range的使用规则一样,只不过增加随机效果

random.sample(seq,n)   #从序列seq中选择n个随机且独立的元素
list1=['test','dcs31',11,77,55]
print(random.sample(list1,2))             # 已知的列表中随机选取2个元素组成一个新的列表

random.choice(test)  #生成随机字符
name='!@#$#%%$$%^&&**D123'
print(random.choice(name))                    #随机选择一个字符

random.shuffle(list)                 #洗牌(随机数列)
list1=['test','dcs31',11,77,55]
random.shuffle(list1)
print(list1)                         # 多次执行,随机取结果


hashlib.md5()   #MD5加密

import hashlib        #导入hashlib模块  ===》不可逆加密

md5=hashlib.md5()     #通过hashlib模块中的md5函数创建一个对象
md5.update('123456'.encode('utf-8'))    #通过md5对象调用的update函数对字符串123456进行加密
print(md5.hexdigest())            #调用hexdigest()生成一个16进制的且为32位的字符串e10adc3949ba59abbe56e057f20f883e 生成一个密文

import string
num1=string.digits    #利用string模块中digits函数拿到0-9的数字(字符串类型)
num2=string.ascii_letters   #生成52个英文字母
print(num1)
print(num2)



面试题:
10万的表数据存放在一个数据库里面然后进行同步到其他数据库,同步完成后你怎么保证两个数据库数据是一致的

第一种方法:可以通过对各自用md5加密之后的密文进行比较
第二种方法:用beyond对比工具


1.使用random模块随机生成手机号码、自定义手机号开头前三位
import random,string
def get_phone():
    list1=['153']           #定义一个153开头的列表,手机号码前三位
    num=string.digits        #0-9随机取
    for i in range(8):
        list1.append(random.choice(num))     #append添加,循环八次,每一次随机选择一个放入列表list1中
    print(list1)
    print(''.join(list1))                    #打印最后一次  如果是数字进行拼接需要转化否则报错
get_phone()
2、用random模块随机生成6位数验证码
import random,string
def verify():
    num=string.digits+string.ascii_letters
    # print(random.sample(num,6))
    return (''.join(random.sample(num,6)))
verify()

3、通过md5加密算法把随机生成的6位数验证码进行加密返回16进制的字符串
import hashlib
def code():
    values=verify()   #调用verify函数的返回值
    md5=hashlib.md5()
    md5.update(values.encode('utf-8'))
    print(md5.hexdigest())
if __name__ == '__main__':
    code()


python中的os模块
os模块提供了多数操作系统的功能接口函数
当os模块被导入后,它会自适
应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编
程时,经常和文件、目录打交道,所以离不了os模块


os模块中常见的方法:
import os
os.getcwd()   #获取当前执行命令所在目录
print(os.getcwd())

os.path.isfile()    #判断是否是文件
print(os.path.isfile(r'D:\python\dcs31\duoceshi31'))    #返回是False

os.path.isdir()
print(os.path.isdir(r'D:\python\dcs31\duoceshi31'))       #返回是True

os.path.exists()    #判断文件或者目录是否存在
print(os.path.exists('D:\python\dcs31\lesson1.py'))        #返回True


os.listdir(dirname)    #列出指定目录下的目录或者文件
print(os.listdir('D:\python\dcs31\duoceshi31'))  #返回  ['test1.py', '__init__.py', '__pycache__']

os.path.split(name)   #分割文件与目录
print(os.path.split('D:\python\dcs31\lesson1.py'))  #返回结果:('D:\\python\\dcs31', 'lesson1.py')

os.path.join(path,name)  #拼接目录与文件名或者目录名
print(os.path.join('D:\python\dcs31\duoceshi31','test001.txt'))   #结果:D:\python\dcs31\duoceshi31\test001.txt

os.mkdir(dir)    #创建一个目录
print(os.mkdir('D:\python\dcs31\duoceshi'))    #创建一个目录叫duoceshi

os.rename(old,new)   #更改目录或者文件名称
print(os.rename('D:\python\dcs31\duoceshi','D:\python\dcs31\dcs'))  #把duoceshi更改为dcs
print(os.rename(r'D:\python\dcs31\duoceshi31\test1.py','D:\python\dcs31\duoceshi31\dcs31.py'))   #把test1.py文件改成dcs31.py文件



python中的re正则模块,实现一个编译查找
一般在日志处理或者文件处理时用的比较多,正则表达式主要用于模式匹配和替换工作

 预定义字符集匹配:
 \d:数字0-9
 \D:非数字
 \s:空白字符
 \n:换行符
 \r:回车符
 re模块数量词匹配:
 符号^:表示的匹配字符以什么开头
 符号$:表示的匹配字符以什么结尾
 符号*:匹配*前面的字符0次或n次
 eg:ab* 能匹配a 匹配ab 匹配abb
 符号+:匹配+前面的字符1次或n次
 符号?:匹配?前面的字符0次或1次
 符号{m}:匹配前一个字符m次
 符号{m,n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是正整数

 1.match函数
从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败并报错
注意:如果规则带了'+',则匹配1次或者多次,无'+'只匹配一次
import re
str1=re.match('\d','239jnkjhhfds343253565467kjhkj')    #d是匹配0-9,第一个字符符合0-9之间,打印结果2,无+号只匹配一次
str1=re.match('\d','d239jnkjhhfds343253565467kjhkj')     #报错,没有这个属性
str1=re.match('\d*','239jnkjhhfds343253565467kjhkj')     #239  匹配到j自动停止
str1=re.match('\d+','239jnkjhhfds343253565467kjhkj')       #239  匹配到j自动停止
str1=re.match('\d?','239jnkjhhfds343253565467kjhkj')        #2
str1=re.match('\d?','w239jnkjhhfds343253565467kjhkj')      # 为空  0次开始
str1=re.match('\d+','w239jnkjhhfds343253565467kjhkj')       #报错  从1次开始找
str1=re.match('\d*','w239jnkjhhfds343253565467kjhkj')       #为空  从0开始开始找
str1=re.match('\d{2}','239jnkjhhfds343253565467kjhkj')      #23
str1=re.match('\d{4}','239jnkjhhfds343253565467kjhkj')     #报错,因为匹配不到就报错
str1=re.match('\d{2,6}','239jnkjhhfds343253565467kjhkj')   #239   匹配不到就终止
str1=re.match('\d{2,3}','2d39jnkjhhfds343253565467kjhkj')     #报错,匹配不到两次就报错
str1=re.match('\d{2,3}','239jnkjhhfds343253565467kjhkj')      #239
str1=re.match('^2\d','239jnkjhhfds343253565467kjhkj')         #23  因为\d是匹配一次,如果不是2开头就报错
str1=re.match('^2\d{2}','239jnkjhhfds343253565467kjhkj')       #239
str1=re.match('^2\d{3,16}','239jnkjhhfds343253565467kjhkj')     #报错
str1=re.match('^2\D','239jnkjhhfds343253565467kjhkj')           #报错   \D代表匹配非字符
str1=re.match('^2\D','2¥9jnkjhhfds343253565467kjhkj')          #2¥
str1=re.match('^2\D{2,8}','2njjnkjhhfds343253565467kjhkj')        #2njjnkjhh
str1=re.match('^2\D{1,3}$','2njjnkjhhfds@')        #报错   ,以2开头并且包括1-3个非数字字符结尾
str1=re.match('^2\D{1,3}$','2njjnkjhhf2s@')          #报错
str1=re.match('^2\D{1,3}$','2njj')             #结果:2njj
str1=re.match('^2\D{1,3}$','2nj')               #  2nj
str1=re.match('^1[1358][2469]\d{8}$','15488889999')    #匹配以1开头,第二位是【1358】里面随机一位,第三位是【2469】里面的随机一位,以8位结尾数字结果
str1=re.match('^1[0-9][0-9]\d{8}$','12345678909')    #匹配以1开头,第二位是【0-9】里面随机一位,第三位是【0-9】里面的随机一位,以8位结尾数字结果
str1=re.match('^1[a-z][A-Z]\d{8}$','1aA88888888')     #匹配以1开头,第二位是【a-z】里面随机一位,第三位是【A-Z】里面的随机一位,以8位结尾数字结果
print(str1.group())                                # 通过group函数把结果显示出来


2.search
从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则报错
import re
str1=re.search('\d','239jnkjhhfds343253565467kjhkj')          #2
str1=re.search('\d+','239jnkjhhfds343253565467kjhkj')         #239
str1=re.search('\d*','239jnkjhhfds343253565467kjhkj')        #239
str1=re.search('\d+','a239jnkjhhfds343253565467kjhkj')        #239  从第一次开始找的情况下可以穿透一次 ,直到第二次匹配不到
str1=re.search('\d*','a239jnkjhhfds343253565467kjhkj')         #为空
str1=re.search('\d*','a23n9jnkjhhfds343253565467kjhkj')       #为空
print(str1.group())

3.findall
从第一个字符开始查找,找到全部相关匹配为止,找不到返回一个列表[]
import re
str1=re.findall('\d','239jnkjhhfds343253565467kjhkj')           #['2', '3', '9', '3', '4', '3', '2', '5', '3', '5', '6', '5', '4', '6', '7']
str1=re.findall('\d+','a239jnkjhhfds343253565467kjhkj')         #['239', '343253565467']
str1=re.findall('\D+','a239jnkjhhfds343253565467kjhkj')         #['a', 'jnkjhhfds', 'kjhkj']
str1=re.findall('error','a239jerrorhfdserror3565errorhkjerror') #['error', 'error', 'error', 'error']  通过error匹配,打印出列表的error个数,以列表的形式输出
str1=re.findall('error','a239jnkjhhfds343253565467kjhkjerro')     #[]
str1=re.findall('dcs()dcs','dcs39jnkjhhfds343253565467kjhkjdcs')  #dcs()dcs中的空括号不会匹配前后内容,只会匹配括号里面的内容返回结果:【】注意:碰到小括号只会匹配小括号里面的内容
str1=re.findall('dcs(.+)dcs','dcs39jnkjhhfds343253565467kjhkjdcs')  #['39jnkjhhfds343253565467kjhkj']  匹配任意字符.+是0次或者n次匹配dcs之间输出的内容
str1=re.findall('"values":"(.+)"','"values":"abc12345","values":"asd54321"')   #['abc12345","values":"asd54321'] 匹配取对应键后面所有元素
print(str1)                    #这里不需要group函数 只有match和search函数需要group

 

4.compile
编译模式生成对象,找到全部相关匹配为止,找不到返回一个列表[]
import re
str1=re.compile('error')
str2=str1.findall('a239jerrorhfdserror3565errorhkjerror')
print(str2)                         #['error', 'error', 'error', 'error']

 

标签:匹配,05,python,str1,re,模块,print,match
From: https://www.cnblogs.com/jjm414/p/17262884.html

相关文章

  • Python 爬虫 模拟手机 爬取听力资料
    Python爬虫模拟手机爬取听力资料目录Python爬虫模拟手机爬取听力资料需求思路1使用Pyppeteer参考实现1测试模拟手机效果2爬取资源首页资源列表详情与音频以cha......
  • python基本语法元素
    命名与保留字注:嵩天老师的python课的笔记python语言程序设计(慕课)变量:程序中保存和表示数据的占位符号如:Money=input()#从键盘获取一串字符串后将字符串赋值给Mon......
  • Python3 导入 excel 到 MySQL 数据库
    不必细说的背景最近在做一个Java项目,需要处理一批历史数据,由于工具限制,采用了Python导入excel到数据库的方式。 安装依赖包pipinstallpandaspipinstal......
  • Python:str.casefold()的用法
    casefold()是Python中字符串对象的一个方法,用于将字符串中的所有字母字符转换为小写,并处理某些特殊字符(如特定语言的重音符号)以确保正确的比较。与lower()方法不同的......
  • python不借助第三方异步框架如何做异步、定时、延时任务?
    问题python不借助第三方异步框架如何做异步、定时、延时任务?回答在Python中,可以使用标准库中的asyncio模块来实现异步任务、定时任务和延时任务。异步任务:使用asyncio......
  • Python字符串学习
    if__name__=="__main__"是Python中常见的代码块,通常用于控制Python程序的执行流程。这个代码块可以保证一些特定的代码仅在当前模块被直接执行时运行,而不会在模块......
  • 05 Golang 流程控制
    一、条件判断1.条件判断简介条件语句是用来判断给定的条件是否满足(表达式值是否为true或者false),并根据判断的结果决定执行情况的语句。go语言中的条件语句主要包含如......
  • 【python基础】eval的使用
    前言开发的时候,遇到一个标注的json文件中多边形的框的表示,一时忘记不知道如何解析,此处主要使用eval函数,故记录之。json文件多边形框的描述"result":[{......
  • #Python基础 利用Pyinstaller 模块对python代码进行打包exe
    一般我们都用 Python 的 Pyinstaller 模块进行打包,这里记录Pyinstaller 模块进行打包。一:安装 Pyinstaller 模块pipinstallPyInstaller二:打开cmd(win+R) ......
  • 我的收藏周刊052
    编辑寄语:
2022年3月28日收藏周刊创刊号发布,转眼一年的时间过去了,周刊发布了51期,其中由于个人疏忽停刊一期。创建此周刊是收到了阮一峰科技爱好者周刊的启发,且由于时......