N11※python常用模块的用法

1> js2py模块

import js2py
# 创建 js 执行环境
context = js2py.EvalJs()
fun_js = """
function add(a,b){
return a+b
}
"""
# 加载 js 文件
context.execute(fun_js)
# 输出函数
print(context.add(2,3))

2> hash 模块

import  hashlib

str = '人生苦短'
# 创建 hash 对象
md5 = hashlib.md5()
# 传递参数
md5.update(str.encode())
# 获取 hash 值 
print(md5.hexdigest())

3> quote和 unquote 模块

中文字符和 %xx 的字符的转换

urllib.parse.quote('厦门自由行')         #  %E5%8E%A6%E9%97%A8%E8%87%AA%E7%94%B1%E8%A1%8C
urllib.parse.unquote('%E5%8E%A6%E9%97%A8%E8%87%AA%E7%94%B1%E8%A1%8C')  # 厦门自由行

4> os模块

① 系统模块

表达式说明
os.sep系统路径的分隔符
os.name您使用的工作平台,windows-nt,linux-posix
os.getenv(环境变量名)读取环境变量
os.getcwd()获取当前路径

② 目录/文件操作

表达式说明
os.listdir(path)返回指定目录下的所有文件和目录名
os.mkdir(path)创建空目录
os.rmdir(path)删除空目录,若目录中有文件则无法删除
os.makedirs(path)生成递归目录,如果目录全部存在,则创建目录失败
os.removedirs(path)删除多层递归的空目录, 若目录中有文件则无法删除
os.chdir(path)改变当前目录,到指定目录中
os.rename(原文件绝对路径,新文件绝对路径)重命名文件或目录名
os.remove(path)删除文件

③ 判断

表达式说明
os.path.exists(path)判断文件或目录是否存在,返回布尔值
os.path.isfile(path)判断是否为文件
os.path.isdir(path)判断是否为目录

④ path相关

表达式说明
os.path.basename(path)返回文件名
os.path.dirname(path)返回文件路径
os.path.getsize(name)获得文件大小
os.path.abspath(name)获得绝对路径
os.path.join(path,name)连接目录与文件名或目录
os.path.splitext(path)分离文件的扩展名和文件名

5> shutil 模块

from shutil import copyfile
from shutil import copy
from shutil import move

① 文件复制

copyfile(src_path, dst_path)
将src文件内容复制至dst文件, 若dst文件不存在,将会生成一个dst文件,若存在将会被覆盖

Ori_Path = 'e:/ori/1.txt'
Tar_Path = 'e:/dst/2.txt'
copyfile(Ori_Path, Tar_Path)

② 文件复制到文件夹内

copy(src_path, dst_path)
将src文件内容复制至dst文件夹内, 若存在同名的文件,则会报错

from shutil import copy
import os
 
Ori_Path = 'e:/assets/ori_img'
Tar_Path = 'e:/assets/album/copy_img'
img_names = os.listdir(Ori_Path)
 
for img_name in img_names:
    ori_img_path = Ori_Path + '/' + img_name
    copy(ori_img_path, Tar_Path)

③ 剪切文件到文件夹内

from shutil import copy
import os
 
Ori_Path = 'e:/assets/ori_img'
Tar_Path = 'e:/assets/album/copy_img'
img_names = os.listdir(Ori_Path)
 
for img_name in img_names:
    ori_img_path = Ori_Path + '/' + img_name
    move(ori_img_path, Tar_Path)

6> re模块

import re  # 导入re模块
result = re.match(正则表达式,要匹配的字符串)   # 使用match方法进行匹配操作
result.group()   # 如果上一步匹配到数据的话,可以使用group方法来提取数据

① 匹配单个字符

代码功能
.匹配任意1个字符(除了\n)
[]匹配[]中列举的字符
\d匹配数字,即0-9
\D匹配非数字
\s匹配空白,即空格或tab键
\S匹配非空白
\w匹配非特殊字符,即a-z、A-Z、0-9、_、汉字
\W匹配特殊字符

② 匹配多个字符

代码功能
*匹配前一个字符出现0次或者多次,即可有可无
+匹配前一个字符出现1次或者多次,即至少1次
匹配前一个字符出现0次或者1次,即要么有1次,要么没有
{m}匹配前一个字符出现m次
{m,n}匹配前一个字符最少出现m次,做多出现n次

③ 匹配开头和结尾

代码功能
^匹配字符串开头
$匹配字符串结尾

④ 匹配指定字符之外的字符

[^指定字符]: 表示除了指定字符都匹配

⑤ 匹配分组相关正则表达式

代码功能
|匹配左右任意一个表达式
(ab)将括号中字符作为一个分组
\num引用分组num匹配到的字符串
(?p<name>)分组起别名
(?P=name)引用别名为name分组匹配到的字符串
match_obj = re.match("apple|pear", value)
match_obj = re.match("[a-zA-Z0-9_]{4,20}@(163|126|qq|sina|yahoo)\.com", "hello@163.com")
atch_obj = re.match("(qq):([1-9]\d{4,10})", "qq:10567")
print(match_obj.group(1))
match_obj = re.match("<[a-zA-Z1-6]+>.*</[a-zA-Z1-6]+>", "<html>hh</div>")
atch_obj = re.match("<([a-zA-Z1-6]+)>.*</\\1>", "<html>hh</html>")
match_obj = re.match("<([a-zA-Z1-6]+)><([a-zA-Z1-6]+)>.*</\\2></\\1>", "<html><h1>www.itcast.cn</h1></html>")
match_obj = re.match("<(?P<name1>[a-zA-Z1-6]+)><(?P<name2>[a-zA-Z1-6]+)>.*</(?P=name2)></(?P=name1)>", "<html><h1>www.itcast.cn</h1></html>")

⑥ 常用正则表达式

a. 数字相关

表达式说明
^[0-9]*$数字
^\d{n,}$n位数字
^\d{m,n}$m-n位数字
^(0|[1-9][0-9]*)$零和非零开头的数字
^[1-9]\d*$非零的正整数
^-[1-9]\d*$非零的负整数
^\d+$非负整数
^-[1-9]\d*|0$非正整数
^\d+(\.\d+)?$非负浮点数
^((-\d+(\.\d+)?)|(0+(\.0+)?))$非正浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$负浮点数
^(-?\d+)(\.\d+)?$浮点数

b. 字符相关

表达式说明
^[\u4e00-\u9fa5]{0,}$汉字
^[A-Za-z0-9]+$英文和数字
^.{3,20}$长度为3-20的所有字符
^[A-Za-z0-9]+$由数字和26个英文字母组成的字符串
^[\u4E00-\u9FA5A-Za-z0-9_]+$中文、英文、数字包括下划线
[^%&’,;=?$\x22]+含有^%&’,;=?$\”等字符

c. 特殊格式

表达式说明
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$Email地址
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?域名
^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$URL
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$手机号码
^($$\d{3,4}-)|\d{3.4}-)?\d{7,8}$电话号码
^\d{15}|\d{18}$身份证号(15位、18位数字)
^\d{4}-\d{1,2}-\d{1,2}日期格式
[\u4e00-\u9fa5]中文字符
\n\s*\r空白行
\d+\.\d+\.\d+\.\d+IP地址
[1-9]\d{5}(?!\d)中国邮政编码

© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享