常用内置模块(四)——subprocess、re

常用模块(四)

一、subprocess模块

1、subprocess为子流程模块,用于执行系统命令,该模块在Python全栈开发中不常用

2、常用方法

  run    返回一个表示执行结果的对象
  call    返回的执行的状态码

 1 import subprocess
 2 
 3 res = subprocess.run("tasklist",shell=True,stdout=subprocess.PIPE)
 4 print(res.stdout.decode("gbk"))
 5 
 6 print(res.stderr)
 7 
 8 
 9 res = subprocess.call("tasklist",shell=True)
10 print(res)
run方法与callt方法

3、Popen()方法

1 #  第一个进程a读取tasklist的内容,将数据交给另一个进程b,进程b将数据写到文件中
2 res1 = subprocess.Popen("tasklist",stdout=subprocess.PIPE,shell=True,stderr=subprocess.PIPE)
3 
4 res2 = subprocess.Popen("echo >a.txt", stdout=subprocess.PIPE, shell=True, stderr=subprocess.PIPE,stdin=res1.stdout)
5 
6 print(res2.stdout.read().decode("gbk"))

二、re模块

1、什么是re

re是正则表达式,正则表达式是一些电邮特殊意义的符号或符号的组合

2、常用匹配模式

最常用的有:
  单个字符匹配:
     \w    字母数字下划线 
  \s 所有不可见字符(\n \t \f)
   \d 所有数字
    . 除了\n以外的所有字符
    ^ 字符串的开头,写在表达式的前面
    $    字符串的末尾,写在表达式的后面   范围匹配:     [abc] 括号内的一个字符
a
|b a或b   重复匹配     {} {,m}:0到m之间, {m,n}:m到n之前 , {m}:必须是m
   
+ 匹配1个或多个,会一直匹配到不满足条件为止,用“?”问号来阻止贪婪匹配(匹配最少满足条件的字符数)
* 匹配0个或多个,会一直匹配到不满足条件为止,用“?”问号来阻止贪婪匹配(匹配最少满足条件的字符数)
? 匹配1个或0个   分组     ()  匹配括号内的表达式

扫描二维码关注公众号,回复: 2762159 查看本文章
 1 import re
 2 
 3 src = 'abc_d12 3d d5s\nd'
 4 
 5 # \d 所有数字
 6 print(re.findall('\d', src))
 7 # ['1', '2', '3', '5']
 8 
 9 # \w 所有数字字母下划线
10 print(re.findall('\w', src))
11 # ['a', 'b', 'c', '_', 'd', '1', '2', '3', 'd', 'd', '5', 's', 'd']
12 
13 # \s 所有不可见字符
14 print(re.findall('\s', src))
15 # [' ', ' ', '\n']
16 
17 # . 所有除了\n以外的字符
18 print(re.findall('.', src))
19 # ['a', 'b', 'c', '_', 'd', '1', '2', ' ', '3', 'd', ' ', 'd', '5', 's', 'd']?
20 
21 # ^ 匹配行首指定字符
22 print(re.findall('^a', src))
23 # ['a']
24 
25 # $ 匹配行尾指定的字符
26 print(re.findall('d$', src))
27 # ['d']
28 
29 # [abd] 匹配中括号内的任意一个字符(a到d,1到3)
30 print(re.findall('[a-d1-3]', src))
31 # ['a', 'b', 'c', 'd', '1', '2', '3', 'd', 'd', 'd']
32 print(re.findall('[^a-d]', src))  # 匹配除了a-d以外的字符
33 # ['_', '1', '2', ' ', '3', ' ', '5', 's', '\n']
34 
35 # {m,n}
36 print(re.findall('d{1,3}', 'd dd ddd dddd'))
37 # ['d', 'dd', 'ddd', 'ddd', 'd']
38 
39 # +  1个或多个
40 print(re.findall('d+', 'd dd ddd dddd'))
41 # ['d', 'dd', 'ddd', 'dddd']
42 
43 # * 0个或多个
44 print(re.findall('d*', 'd dd ddd dddd'))
45 # ['d', '', 'dd', '', 'ddd', '', 'dddd', '']
46 
47 # ?  0个或1个
48 print(re.findall('\d?', 'd 21dd_\n4'))
49 # ['', '', '1', '2', '', '', '', '', '4', '']
常用符号
 1 # 贪婪匹配  *  +    不是固定的特殊符号  只是一种现象
 2 # 会一直匹配到不满足条件为止 用问号来阻止贪婪匹配(匹配最少满足条件的字符数)
 3 
 4 print(re.findall("\w+?", "ajshsjkdsd"))
 5 # ['a', 'j', 's', 'h', 's', 'j', 'k', 'd', 's', 'd']
 6 
 7 print(re.findall("\w*?", "ajshsjkdsd"))
 8 # ['', '', '', '', '', '', '', '', '', '', '']
 9 
10 print(re.findall("\w+?s", "ajshsjkdsd"))
11 # ['ajs', 'hs', 'jkds']
12 
13 print(re.findall("\w*?s", "ajshsjkdsd"))
14 # ['ajs', 'hs', 'jkds']
贪婪匹配和阻止贪婪

3、re模块的常用方法

(1).findall        从左往右查找所有满足条件的字符 返回一个列表
(2).search      返回第一个匹配的字符串,结果封装为对象
(3).match(不常用)   匹配行首, 返回值与search相同
(4).compile(不常用)   将正则表达式封装为一个正则对象,可以重复使用这个表达式

 1 import re
 2 
 3 print(re.findall('\w', src))
 4 # ['a', 'b', 'c', '_', 'd', '1', '2', '3', 'd', 'd', '5', 's', 'd']
 5 
 6 print(re.search('hello','weqwe hello dddd helllo dd'))
 7 # <_sre.SRE_Match object; span=(6, 11), match='hello'>
 8 
 9 print(re.match("hello"," world hello python"))
10 # None
方法

猜你喜欢

转载自www.cnblogs.com/linagcheng/p/9475452.html