常用模块

常用模块

re*****

import re

# \w 英文字母 数字 下划线 _ a-z A-Z 0-9 word

# print(re.findall('\w','abcd1232132!@#_#@@!#'))

# 与\w相反 只要是大写字符 就是与小写字符相反的意思

# print(re.findall('\W','abcd1232132!@#_#@@!#'))

#匹配数字 0_9数字 digit \d

# print(re.findall('\d','123asd!@#$#%^$&*()'))

#匹配任何不可见的 \S肉眼看得见的..\s

# print(re.findall('\s','\n \t \f \v 123 123 '))

#除了\n之外的 .

# print(re.findall('.','123\n \n \raskdjl'))

#重复匹配  *表示0到无穷 0次也满足 则意味着 就算内容中没有任何内容匹配也会给你一个控制阀 因为空字符也算0次

# print(re.findall('\w*','ashdjk213!@#'))

# +1到无穷次

# print(re.findall('\w+','ashdjk213!@#'))

# {a,b} 最少a次 最多b次

# print(re.findall('\w{,2}','ashdjk213!@#'))

#{1,}1-无穷 与+的意思相同

# {0,2} 0-2  {1,2{} 1-2    {,1} 与?意思相同

# 0-1次

# print(re.findall('\w?','sd a123213'))

 

# *无穷(随便几次 没有也行)

# + 1-无穷

# ? 0-1

# {a,b} 手动指定匹配次数

 

 

#位置匹配 ^开始处匹配   从结尾处匹配$

# print(re.findall('^a\w*','wqewqe'))

# print(re.findall('\w*g$','wqewqeg'))

# 1.到最后看一眼是不是与表达式匹配 如果不匹配直接放弃

#如果结尾处没问题 在回过头来从前面开始匹配

# 匹配出现{n}次

# print(re.findall('a{2}','aaaaas'))

 

#范围匹配 指定哪些内容是你要的 画一个范围

# print(re.findall('1|2|3*','12312312453431232123'))

#[abcd]范围匹配

#如果内容中匹配-时 放前面或者放后面或者\-

# print(re.findall('[1-3]+','123asd123'))

# print(re.findall('[123]+','123asd123'))

# print(re.findall('[0-9a-zA-Z]+','asdjklDFAASS123asd123'))

#取反[^a-b]

# print(re.findall('[^0-9]','123asd'))

 

#贪婪匹配与非贪婪匹配

#贪婪指的是尽可能的匹配更多的内容

print(re.findall('ab+','abbbbb'))

#非贪婪指的是 金可能的匹配少的内容(主要用的)

print(re.findall('ab*?','ababbbb'))\

# 当我们需要从匹配结果中拿出来一部分时 就需要分钟把你要的内容加上括号即可

# 当我们需要从一个匹配结果中拿到多个不同部分时 可以加多个分组

#findall会把这些部分放到元祖中

#search也是全文查找但是只返回找到的第一个

# print(re.search('as','pas da sd asd').group())

#从字符串开始出开始匹配 第一个不匹配直接放弃 与^效果相同

# print(re.match('as','pas da sd asd'))

# 将表达式打包成对象,这样可以多次使用无需重新编写

# p=re.compile('as','pas da sd asd')

#print(re.split('\s','pab pad s dsa asd'))

#替换内容

#  旧的内容 新的内容 待处理的字符串  sub

print(re.sub('python','PYTHON','python is nb python'))

print(re.sub('python(.+)python',r'python\1PYTHON','python is nb python'))

shutil***

'''

shutil

高级的文件处理

    封装的更简单了

    主要是文件的重弄之,移动,压输解压测试

'''

import  shutil

# 文件发㢟

# f1=open('test.txt','rb')

# f2=open('testcopy.txt','wb')

# shutil.copyfileobj(f1,f2)

# shutil.copyfile('test.txt','testcopy2.txt')

 

#需要保证目标文件已经存在,才能保证权限

# shutil.copyfile('test.txt','testcopy3.txt')

# shutil.copymode('test.txt','testcopy3.txt')

 

#拷贝文件的访问信息

# shutil.copystat('test.txt','testcopy3.txt')

 

#base_name 指定文件的名字

#默认把当前执行文件所在目录全部压缩

#如果同时指定了root和base base生效 并且会把需要压缩文件的的完整文件一并压缩

shutil.make_archive('abc','zip',roor_dir='路径')

#解压

shutil.unpack_archive('abc.zip','mydir')

configparser***

config parser

    配置文件解析模块

    配置应用程序的文件

配置信息指的是,程序中有一些数据需要用户自己来指定,不应该固定死

    这就需要配置文件了

    对于配置文件而言,我们的程序最常见的就是读取配置文件操作

    当configpasper模块也 能修改和创建配置文件 但不常用

'''

import configparser

cfg=configparser.ConfigParser()

cfg.read('1.cfg',encoding='utf-8')

 

print(cfg.sections())#获取所有分区名字

print(cfg.get("atm","name"))#获取某个选项的值

#所有选项到的都是字符串类型

#提过了getint等转换类型

 

hashlib****

'''

hash

    unhashable 不可hahash 是可变的

    hash是一种算法

    特点:

    1.输入任意长度的数据 输出固定长度的字符串 因此也称之为信息摘要算法

    2.hash算法有很多实现方式,当算符固定时,如果输入相同,输出结果必然相同(极小的几率会出现 不同输入 产生相同的结果)

    3.无法通过hash结果反解出源数据

 

    使用场景

    1.可以用于加密

    2.用于文件校验

'''

import hashlib

#创建一个加密对象

m = hashlib.md5()

#计算123456的哈希值

m.update('123456'.encode('utf-8'))

#提取加密结果

print(m.hexdigest())

subfprocess

'''

    subprocess

    子进程

    进程就是一个正在运行中的程序

    一个进程a在运行过程中开启了另一个进程b

    b就称之为a的子进程

 

    当你的程序在运行过程中有一个任务,不能直接处理,需要其他的程序来提供帮助时 就需要开启子进程

    subprocess模块的目的就是要使得子进程(执行了一个系统指令)把数据输出到我的程序中

'''

import subprocess

p=subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE)

res=p.stdout.read()

print(res.decode('gbk'))

 

 

xldt,xlwd****

import xlrd

#读取文件 得到一个工作簿对象

# work_book=xlrd.open_workbook(r'F:\untitled2\公司机密数据.xlsx')

# sheet=work_book.sheet_by_index(1)

# print(sheet.row(1))#获取第二行的所有数据

# print(sheet.row_len(1))#获取第二行有几个单元格

# print(sheet.row_slice(1))#获取第二行的所有数据

# #第一个数字是索引  第二个是开始的列索引 第三个是结束的列索引

# print(sheet.row_slice(1,2,4))#获取第二行的第二索引为2到4的 不包含4

# print(sheet.row_types(1,2,4))#获取第二行的第二索引为2到4的数据类型 不包含4

# print(sheet.nrows)

# print(sheet.ncols)

# print(sheet.name)

# print(sheet.cell_type(2,0))

# print(sheet.cell(2,0).value)

# print(sheet.cell(2,0))

# print(sheet.cell(2,0).ctype)

# print(sheet.col_slice(0,3,5))#切片得到的是一个列表 里面放的是单元格

# print(sheet.col_slice(0,3,5)[0].value)#取出第零个单元格的值#切片得到的是一个列表 里面放的是单元格

# print(sheet.col_slice(0,3,5)[0].ctype)#取出第零个单元格的值#切片得到的是一个列表 里面放的是单元格的类型

#获取所有数据

# worl_book=xlrd.open_workbook('公司机密数据.xlsx')

# sheet=worl_book.sheet_by_index(1)

# for i in range(sheet.nrows):

#     for cell in sheet.row_slice(i):

#         print(cell,end='')

#     print()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值