python全栈学习记录(十八)re、os和sys、subprocess
re、os和sys、subprocess
文章目录
- re、os和sys、subprocess
- 一、re
- 1.正则字符
- 2.正则表达式的使用
- 3.group的使用
- 4.贪婪匹配与惰性匹配
- 5.其他注意事项
- 二、os和sys
- 1.os
- 2.sys
- 三、subprocess
- 四、打印进度条
一、re
python中的re模块用来使用正则表达式,正则就是用一系列具有特殊含义的字符组成一套规则,该规则用来描述具有某一特征的字符串,正则就是用来去一个大的字符串中匹配出符合规则的子字符串。
1.正则字符
*表示字符出现0次及以上
+表示字符出现1次及以上
{2,5}表示字符出现2至5次
?表示字符出现0或1次
.表示任意字符
(a|b)表示a或b
(a&b)表示a与b
[a-z A-Z]表示所有英文字母
注意:[+ - * /]会报错,-在[]内表示取范围,如果想表示减号需要转义-
[^0-9] 表示取数字以外的字符,^在[]内表示取反
\d表示数字 \D表示非数字
\w表示字母、数字、下划线 \W表示非字母、数字、下划线
\s表示空白字符(换号、空格、制表符等) \S表示非空白字符
\d表示边界( ab ,左右侧的空格就是边界)
^表示字符首行 $表示字符末尾
2.正则表达式的使用
re.findall(正则字符,字符串,flag)会匹配字符串中所有的满足要求内容,并返回列表
常见的flag设置有三种,re.I表示不区分大小写;re.M表示多行匹配,^和$可以匹配多行的首尾;re.DOTALL表示.可以匹配到换行。
import re
#匹配以139开头的手机号码
res=re.findall('139.{8}','13914011111 13812311111 13915111111')
print(res)
<<<['13914011111', '13915111111']
re.search(正则字符,字符串,flag)会以match对象的形式返回一个匹配值(match对象中包含了值和索引)
import re
#匹配以139开头的手机号码
res=re.search('139.{8}','13914011111 13812311111 13915111111')
print(res)
<re.Match object; span=(0, 11), match='13914011111'>
#可以通过group函数取出match对象内的值,span函数取出其索引
print(res.group())
print(res.span())
<<<13914011111
<<<(0,11)
re.split(正则字符,字符串,flag)表示按正则规则拆分字符串,返回拆分后的列表
import re
res=re.split('\W+','adc ?ews12 wdssa+_ssa')
print(res)
<<<['adc', 'ews12', 'wdssa', '_ssa']
re.sub(正则字符,替换字符串/函数地址,字符串,flag)表示按正则匹配规则替换字符串中的字符
import re
#把以139开头的电话换为138开头
res=re.sub('139.{8}',lambda x:f'138{x.group()[3:]}','13914011111 13812311111 13915111111')
print(res)
<<<13814011111 13812311111 13815111111
re.finditer(正则字符,字符串,flag)表示返回匹配值match对象的的迭代器
import re
#匹配以139开头的手机号码
res=re.finditer('139.{8}','13914011111 13812311111 13915111111')
print(res.__next__())
print(res.__next__())
<<<<re.Match object; span=(0, 11), match='13914011111'>
<<<<re.Match object; span=(24, 35), match='13915111111'>
re.compile(正则字符)表示将正则表达式传给变量
import re
a=re.compile('[a-z]+')
print(a.findall('adsds1223fd?.dsas23'))
<<<['adsds', 'fd', 'dsas']
3.group的使用
在正则表达式中group表示分组,group需要与match对象一起使用,()括起来的正则字符表示分为一组,可以通过group函数查看组内的字符
import re
res=re.search('(139)-(.{8})','139-14011111')
#查看第一组的字符
print(res.group(1))
#查看第二组的字符
print(res.group(2))
#查看匹配的字符
print(res.group())
#查看所有组的字符
print(res.groups())<<<139
<<<14011111
<<<139-14011111
<<<('139', '14011111')
4.贪婪匹配与惰性匹配
贪婪匹配表示尽可能匹配多的内容(默认),惰性匹配表示尽可能匹配少的内容
import re
res=re.findall('.+','1234567')
print(res)
<<<['1234567']#切换惰性匹配时,需要在匹配式最后加上?
res=re.findall('.+?','1234567')
print(res)
<<<['1', '2', '3', '4', '5', '6', '7']
5.其他注意事项
在非返回match对象的一些函数中()表示只输出括号中匹配的内容(匹配边界),若一组正则字符中出现多个()会将一次匹配到的内容放入一个元组中
import re
res=re.findall('12(34)','1234')
print(res)
<<<['34']import re
res=re.findall('12(3)(4)','1234')
print(res)
<<<[('3', '4')]
当正则字符中出现小括号时,默认会被当做匹配边界,如果你想让其保持小括号的意思时,需要在(后加?:
import re
res=re.findall('123(4|5)','1234 1235')
print(res)
<<<['4', '5']import re
res=re.findall('123(?:4|5)','1234 1235')
print(res)
<<<['1234', '1235']
在正则字符传入python解释器的过程中会经历两次转义过程,第一次是作为python字符串的转义,第二次是作为正则字符的转义,例如‘12\b’python会把字符转义为’12\x08’(\x08表示退格)传给正则模块,然后正则模块匹配’12\x08’。
现在我想让正则表达式成功匹配到‘\c(1)'这个字符串,可以如何写正则字符呢?
import re
a=‘\c(1)'
#给字符串前面加r以后python就不会对字符串进行转义
#方式一
res=re.findall(r'\\c\(1\)',a)
print(res)
<<<['\\c(1)']#输出时windows会将\c转义为\\c
#解释:python将'\\c\(1\)'传给正则模块,正则模块把\\c、\(和\)转义为\c、(和)#方式二
res=re.findall(r'\\\c\\(1\\)',a)
print(res)
<<<['\\c(1)']
#解释:python将\\转义为\以后把'\\c\(1\)'传给正则模块,正则模块把\\c、\(和\)转义为\c、(和)
注意点:正则表达式中匹配 \需要在表达式中写\ \
二、os和sys
1.os


os.getpid()表示获取pid号
os.getppid()表示获取父进程pid号
2.sys
sys.argv()返回列表,列表里是用户在终端传入的参数(例如用户在终端运行python 输入 python3 a.py 123 456,123和456两个参数会被传入argv)
sys.setrecursionlimit(n)表示设置最大递归深度为n
sys.path表示导入模块的路径
三、subprocess
subprocess模块可以使用python控制终端窗口
import subprocess
#tasklist为windows的终端命令,表示产看进程信息
#stdout和stderr表示终端返回的正确信息和错误信息
#subprocess.PIPE表示管道,正确信息和错误信息会通过管道传给subprocess模块
#运行subprocess.Popen会产生一个子进程,而res.stdout.read()会等待子进程运行结束并返回终端正常执行命令以后的结果
res=subprocess.Popen('tasklist',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
b=res.stdout.read()
print(b.decode('gbk'))
四、打印进度条
import timedef make_progress(percent,width=50):if percent > 1:percent=1#在%的格式化字符中表示%需写为%%,show_str=('[%%-%ds]' % width) % (int(percent * width) * '#')print('\r%s %s%%' %(show_str,int(percent * 100)),end='')total_size=10240
recv_size=0
while recv_size < total_size:time.sleep(0.5) # 模拟经过了0.5的网络延迟下载了1024个字节recv_size+=1024# 调用打印进度条的功能去打印进度条percent=recv_size / total_sizemake_progress(percent)
相关文章:
python全栈学习记录(十八)re、os和sys、subprocess
re、os和sys、subprocess 文章目录 re、os和sys、subprocess一、re1.正则字符2.正则表达式的使用3.group的使用4.贪婪匹配与惰性匹配5.其他注意事项 二、os和sys1.os2.sys 三、subprocess四、打印进度条 一、re python中的re模块用来使用正则表达式,正则就是用一系…...
GO Fsnotify学习与使用
文章目录 说明demo 说明 fsnotify 是 Go 的一个文件系统通知库,可以监视文件或目录的变化。基本用法如下: 安装库: go get github.com/fsnotify/fsnotify创建 watcher: watcher, err : fsnotify.NewWatcher() if err ! nil {log.…...
除了递归算法,要如何优化实现文件搜索功能
大家好,我是 V 哥,今天的文章来聊一聊 Java实现文件搜索功能,并且比较递归算法、迭代方式和Memoization技术的优缺点。 以下是一个使用 Java 实现的文件搜索功能,它会在指定目录及其子目录中搜索包含特定关键字的文件。此实现使用…...
【AI算法岗面试八股面经【超全整理】——NLP】
AI算法岗面试八股面经【超全整理】 概率论【AI算法岗面试八股面经【超全整理】——概率论】信息论【AI算法岗面试八股面经【超全整理】——信息论】机器学习【AI算法岗面试八股面经【超全整理】——机器学习】深度学习【AI算法岗面试八股面经【超全整理】——深度学习】NLP【A…...
Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】
Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】 目录 Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】 一、简单介绍 二、单例模式 (Singleton Pattern) 1、什么时候使用单例模式 2、单例模式的好处 3、使用单例模式的…...
CSS中的字体样式、文本样式、列表样式以及背景和渐变
一、字体样式和文本样式 1.span标签 span标签的作用:能让某几个文字或者是词语凸显出来 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-…...
教你如何在Java中操作Redis
Redis的Java客户端 Redis 的 Java 客户端很多,常用的几种: Jedis:基于 Java 的 Redis 客户端,提供了 Redis 命令的全面支持。Lettuce:高性能的 Java 客户端库,用于与 Redis 数据库进行交互。它支持同步、…...
nsight-system教程
一 安装 参考 nsight-compute使用教程-CSDN博客https://blog.csdn.net/youzjuer/article/details/142549332 二 使用 nsys profile -t cuda,nvtx --force-overwrite true -o xxxx python xxx.py xxxx表示生成文档的名字 如果是cuda c 则 python xxx.py替换为./xxx即可 这…...
进程的那些事--进程控制
目录 前言 一、创建进程 二、退出进程 void exit (int retval) 三、进程等待 四、进程替换 前言 提示:这里可以添加本文要记录的大概内容: 前面我们认识了进程,现在让我们认识几个进程的接口 提示:以下是本篇文章正文内容…...
FortiOS SSL VPN 用户访问权限配置
简介 使用不同用户组或用户登录 SSL VPN 隧道模式后,可配置不同的访问权限。 本文介绍为不同用户组分配不同访问权限的配置方法。 相关组件 FortiGate:FortiOS v6.4.14 build2093 (GA) 客户端:Windows11,安装 FortiClient VPN 7.…...
C++_vector类
欢迎来到本期节目- - - vector类 本期直接先上代码,然后以代码为例介绍需要注意的问题. 模拟实现: #pragma once #include<iostream> #include<assert.h> using namespace std;namespace my_room {template<class T>class vector{p…...
Spring Boot入门到精通:网上购物商城系统
第3章 系统分析 3.1 可行性分析 在系统开发之初要进行系统可行分析,这样做的目的就是使用最小成本解决最大问题,一旦程序开发满足用户需要,带来的好处也是很多的。下面我们将从技术上、操作上、经济上等方面来考虑这个系统到底值不值得开发。…...
在Vue.js中,你可以使用Element UI的el-input组件结合计算属性来实现模糊查询
<template><div><el-input v-model"searchQuery" placeholder"请输入查询内容"></el-input><div v-for"item in filteredList" :key"item">{{ item }}</div></div> </template><s…...
delphi制作漂亮的农历窗体(IntraWeb+Layui的完美结合)
delphi制作漂亮的农历窗体(IntraWebLayui的完美结合) 不需要安装服务器,Apache和IIS都不需要,自带企业级服务器。 运行exe服务器就架好了,直接打开手机浏览器或者电脑浏览器,网页就出来了,如果…...
发票OFD格式转换成PDF
引入依赖,低版本的报错,2.0.2能够实现转换 <dependency><groupId>org.ofdrw</groupId><artifactId>ofdrw-converter</artifactId><version>2.0.2</version><exclusions><exclusion><groupId&g…...
高通AI应用程序开发3:网络模型(一)
1. 支持的网络模型 Qualcomm神经处理SDK支持下表所列的网络模型。 有关支持的运行时和单个图层类型的限制和约束的详细信息,请参阅 限制 。 GPU运行时中支持的所有层对两种GPU模式都有效:GPU_FLOAT32_16_HYBRID和GPU_FLAAT16。GPU_FLOAT32_16_HYBRID-…...
03. 前端面试题之ts : typescript 的数据类型有哪些?
文章目录 一、typescript是什么二、typescript有哪些数据类型booleannumberstringarraytupleenumanynull 和 和 undefinedvoidneverobject 三、总结 一、typescript是什么 typescript 和 javascript几乎一样,拥有相同的数据类型,另外在javascript基础上…...
PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题
PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题 PyCharm、VS Code 安装通义灵码介绍主要应用场景支持编程语言安装指南JetBrains IDEs 中安装指南步骤 1:准备工作步骤 2:在 JetBrains IDEs 中安装通义灵码…...
机器人速度雅可比矩阵求解(2自由度平面关节机器人)
关节速度和末端速度空间的映射需要计算雅可比矩阵的逆矩阵,在博途PLC里如何计算一个方阵的逆矩阵,大家可以参考下面这篇文章: 博途PLC矩阵求逆 矩阵求逆 博图SCL_博图矩阵运算-CSDN博客文章浏览阅读839次。本文介绍如何用C语言实现矩阵求逆的过程,详细解析了相关代码,适…...
【AI大模型-文心-思维树解读-开篇】
提问:什么是“”“思维树”“”模型框架 回答:如下 版本:文心大模型3.5 “思维树”(Tree of Thoughts, ToT)模型框架是一个利用大型语言模型进行问题解决的框架。它借鉴了人类认知研究的成果,特别是关于人…...
从零构建高性能技术博客:SSG选型、自动化部署与SEO优化实战
1. 项目概述:一个技术博客的诞生与演进“wangtunan/blog”,这看起来只是一个简单的GitHub仓库名,背后却是一个技术人持续输出、构建个人知识体系的完整实践。它不仅仅是一个存放Markdown文件的代码库,更是一个集成了现代前端技术栈…...
Agent OS:AI智能体开发的操作系统级解决方案
1. 项目概述:一个为AI智能体而生的操作系统最近在AI智能体开发圈子里,一个名为“Agent OS”的项目热度持续攀升。它来自Rivet.dev团队,定位非常清晰:一个专为构建、运行和管理AI智能体而设计的操作系统。如果你正在尝试将大语言模…...
OpenCore Legacy Patcher终极指南:5步让老旧Mac完美运行最新macOS系统
OpenCore Legacy Patcher终极指南:5步让老旧Mac完美运行最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是…...
在线Graphviz图表编辑器:3步创建专业技术流程图
在线Graphviz图表编辑器:3步创建专业技术流程图 【免费下载链接】GraphvizOnline Lets Graphviz it online 项目地址: https://gitcode.com/gh_mirrors/gr/GraphvizOnline 还在为复杂的技术图表绘制而烦恼吗?GraphvizOnline作为一款革命性的在线G…...
如何3步获取百度网盘真实下载地址实现满速下载
如何3步获取百度网盘真实下载地址实现满速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾被百度网盘的非会员下载速度困扰?当下载重要的工作文件、学…...
30亿条出行记录解密:如何用纽约出租车数据洞察城市脉搏 [特殊字符][特殊字符]
30亿条出行记录解密:如何用纽约出租车数据洞察城市脉搏 🚖📊 【免费下载链接】nyc-taxi-data Import public NYC taxi and for-hire vehicle (Uber, Lyft) trip data into a PostgreSQL or ClickHouse database 项目地址: https://gitcode.…...
Linux磁盘挂载与开机自启配置
Linux磁盘挂载与开机自启配置磁盘挂载是 Linux 存储管理中的基础操作。很多线上问题都与挂载配置有关,例如重启后数据盘没挂上、路径指向错误分区、应用因挂载点缺失而启动失败。中级阶段不仅要会临时挂载,更要理解永久挂载的配置方式和风险控制。一、先…...
基于二维码的文件分片传输:原理、实现与安全应用
1. 项目概述:一个基于二维码的智能文件分发系统 最近在折腾一个挺有意思的小项目,源于一个很实际的需求:如何在不同的设备之间,安全、便捷地传输一些敏感或临时的文件,而不依赖任何第三方云存储或即时通讯工具。你可能…...
如何在Windows上高效使用酷安社区:UWP桌面客户端完全指南
如何在Windows上高效使用酷安社区:UWP桌面客户端完全指南 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 你是否经常在手机小屏幕上刷酷安,眼睛酸痛却停不下来&…...
基于AW9523与CircuitPython的互动LED灯带硬件开发实践
1. 项目概述:一个会“动”的LED灯带如果你玩过嵌入式开发,尤其是用Adafruit的板子做点小玩意儿,那你肯定对“快速原型”这个词不陌生。CircuitPython的出现,让写代码控制硬件变得像在电脑上写脚本一样简单。但有时候,板…...
