一.re模块

  正则表达式时计算机科学的一个概念,正则表达式通常被用来检索,替换那些符合某个模式的文本,大多数程序设计语言都支持利用正则表达式进行字符串操作.

  正则就是用一些具有特殊含义的符号组合到一起来描述字符或者字符串的方法,或者说正则就是用来描述一类事物的规则.它内嵌在python中,并通过re模块来实现,正则表达式模式被编译成一系列的字节码,然后由C编写的匹配引擎执行.re模块的作用是对字符串进行过滤,在一字符串中如果想要找到想要得到的内容就需要告知其过滤规则,这个过滤规则就是正则表达式.

常用匹配模式:

  

import re
# 待处理字符串
str1 = 'abc-d$eaf+ \n 1*/__g12a3'
# findall()在字符串中查找所有满足条件的
# \w查找字母数字下划线 \W查找非字母数字下划线
print(re.findall('\w',str1))
print(re.findall('\W',str1)) # \s查找所有不可见字符 \S查找所有可见字符
print(re.findall('\s',str1))
print(re.findall('\S',str1)) # \d查找任意数字 \D查找任意非数字
print(re.findall('\d',str1))
print(re.findall('\D',str1)) # \n
print(re.findall('\n',str1)) # .匹配除了换行符的任意字符
print(re.findall('.',str1)) # \s\w\d 都是匹配单个字符
# 匹配重复字符* + ? {}
# *前面的表达式匹配0次或多次
print(re.findall('\w\d*',str1)) # +前面的表达式匹配1次或多次
print(re.findall('\d+','1 11 asf 2')) # ?前面的表达式匹配1次或0次
print(re.findall('\d?','1 111')) # {m,n}最少m次,最多n次
print(re.findall('\d{1,3}','1 12111'))
#{m}必须是m次
print(re.findall('[a-z]{3}','aaa aa a aa aaa aaaa')) # 从字符中找到左右的0或1或2
# | 匹配范围
print(re.findall('0|1|2','123af45ad60d21'))
# []字符集合 中括号中的符号不是整体是单个字符
print(re.findall('[012]','123af45ad60d21'))
# 在范围匹配时使用脱字符表示取反
print(re.findall('[^0-9]','123af45ad60d21'))
# 请找出所有的数字0-9和字母a-z A-Z 注意 减号只有在两个字符中间才有范围的意思
print(re.findall('[0-9a-zA-Z]','123+_lk#$a')) # ^ 匹配行首
print(re.findall('^h','hellohh'))
# $ 匹配行尾 注意$写在表达式的后面
print(re.findall('ha$','hellohha')) # \b匹配单词末尾
print(re.findall(r'h\B','elloh wohrld okhi')) # 贪婪匹配 * +
# 会一直匹配到不满足条件为止 用问好来阻止贪婪匹配(匹配最少满足条件的字符数)
print(re.findall('\w*?','sfasdefd')) src = "<img src='www.baidu.jpg'><img src='www.baidu1.jpg'><img src='www.baidu2.jpg'>"
# ()用于给正则表达式分组(group) 不会改变原来的表达式逻辑意义
# 优先取出括号内的内容 ?:取消括号的优先级
print(re.findall("src='(.+?)'",src))

二.subprocess模块

  subprocess模块是python2.4中新增的一个模块,它允许你生成新的进程,连接到它们的in/out/err管道,并获取他们的返回码.

  subprocess模块中常用函数:

    subprocess.run()      Python 3.5中新增的函数。执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例

    subprocess.call()      执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd)。

    subprocess.Popen()  该类用于在一个新的程序中执行一个子程序.上面的函数都是基于subprocess.Popen类实现的

  实例代码:

import subprocess
res = subprocess.run('tasklist',shell=True,stdout=subprocess.PIPE)
print(res.stdout.decode('gbk')) print(res.stderr)
#
res = subprocess.call('tasklist',shell=True)
print(res)
# 第一个进程a读取tasklist的内容 将数据交给另一个进程b 另一个进程b将数据写到文件中
res1 = subprocess.Popen('tasklist',stdout=subprocess.PIPE,shell=True,stderr=subprocess.PIPE)
res2 = subprocess.Popen('findstr cmd',stdout=subprocess.PIPE,shell=True,stderr=subprocess.PIPE,stdin=res1.stdout)
print(res2.stdout.read().decode('gbk'))

Python常用模块(四)的更多相关文章

  1. python常用模块之时间模块

    python常用模块之时间模块 python全栈开发时间模块 上次的博客link:http://futuretechx.com/python-collections/ 接着上次的继续学习: 时间模块 ...

  2. python常用模块-调用系统命令模块(subprocess)

    python常用模块-调用系统命令模块(subprocess) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. subproces基本上就是为了取代os.system和os.spaw ...

  3. python常用模块-配置文档模块(configparser)

    python常用模块-配置文档模块(configparser) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. ConfigParser模块用于生成和修改常见配置文档,当前模块的名称 ...

  4. Python常用模块-摘要算法(hashlib)

    Python常用模块-摘要算法(hashlib) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MD5算法参数详解 1.十六进制md5算法摘要 #!/usr/bin/env p ...

  5. Python常用模块-时间模块(time&datetime)

    Python常用模块-时间模块(time & datetime) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.初始time模块 #!/usr/bin/env pyth ...

  6. Python常用模块之sys

    Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 常见用法 sys.argv 可以用sys.argv获取当前正在执行的命令行参数的参数列表(list). 变量 ...

  7. Python常用模块中常用内置函数的具体介绍

    Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...

  8. python——常用模块2

    python--常用模块2 1 logging模块 1.1 函数式简单配置 import logging logging.debug("debug message") loggin ...

  9. python——常用模块

    python--常用模块 1 什么是模块: 模块就是py文件 2 import time #导入时间模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的 ...

随机推荐

  1. PXE刷机,存储节点失败

    最近刚刚帮客户对一台满配的X6-2刷机初始化,尝试了下PXE方式,但刷完机后,发现计算节点的imagehistory输出的状态都是成功的,而所有的存储节点状态都为failure,具体如下: [root ...

  2. mysql不支持emoji表情的问题的解决方法

    最近财神圈项目集成微信登录功能的过程中,当保存用户有昵称含有表情符号时后台服务抛出异常,原来是数据库默认字符集不支持emoji表情字符.找到问题的原因后,因为之前也没有遇到过这样的问题,也没思路,迅速 ...

  3. POJ1060 Modular multiplication of polynomials

    题目来源:http://poj.org/problem?id=1060 题目大意: 考虑系数为0和1的多项式.两个多项式的加法可以通过把相应次数项的系数相加而实现.但此处我们用模2加法来计算系数之和. ...

  4. java反射之一

    public static void main(String[] args) { try { Class cla = Class.forName("com.money.test.Employ ...

  5. python中 列表 字典 元组的了解

    #######列表######1.列表的特性 server = [['http'],['ssh'],['ftp']] server1 = [['mysql'],['firewalld']]  连接  ...

  6. Jenkins自动化CI CD流水线之3--参数化构建

    一. 背景 如果只是简单的构建,jenkins自己默认的插件可以做,但是如果我们想要在构建过程中有更多功能,比如说:选择性构建.传参.项目指定变量等等其他功能,基础的参数化构建可以实现一些简单功能,但 ...

  7. xshell传输文件到linux

    我们使用xshell来连接linux之后会发现方便了很多~然而使用xshell要怎么把本地文件传到linux上面呢? 1.yum安装一款工具.#yum install  lrzsz -y 2检查是否安 ...

  8. acm刷题序列

    POJ推荐50题 著名的北邮acm训练队推荐50题 https://blog.csdn.net/bat67/article/details/71735012 都是poj上的题 1000:会教会你如何使 ...

  9. Vue.js递归组件实现动态树形菜单

    使用Vue递归组件实现动态菜单 现在很多项目的菜单都是动态生成的,之前自己做项目也是遇到这种需求,翻看了官网案例,和网上大神的案例.只有两个感觉,官网的案例太简洁,没有什么注释,看起来不太好理解,大神 ...

  10. 多个ajax请求时控制执行顺序或全部执行后的操作

    1.当确保执行顺序时 (1)请求加async: false,,这样所有的ajax就会同步执行,请求顺序就是代码顺序: (2)$.when   确保所有异步的ajax请求完毕时 $.when($.aja ...