configparser模块,正则表达式,re模块
section 把...分段,截面,部分,章节,地区
option 期权,选择权,选择
作用:用于生成和修改常见配置文档,当前模块的名称在python 3.x 版本中变更为configparser。
调用方法:import configparser
1.configparser.ConfigParser():配置文件
import configparser # 配置文件
config = configparser.ConfigParser()
#生成configparser配置文件 ,字典的形式
#第一种写法
config["DEFAULT"] = {'ServerAliveInterval': '45',
'Compression': 'yes',
'CompressionLevel': '9'}
#第二种写法
config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'
#第三种写法
config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Host Port'] = '50022' # mutates the parser
topsecret['ForwardX11'] = 'no' # same here
config['DEFAULT']['ForwardX11'] = 'yes'
#写入后缀为.ini的文件
with open('example.ini', 'w') as configfile:
config.write(configfile)
2.控制台打印结果
import configparser # 配置文件
config = configparser.ConfigParser()
config.read('example.ini')
# print(config.sections())#除default,取其余所有块
# print(config.defaults())#特殊,只能这样取default块
# print(config['bitbucket.org']['User'])
for key in config['bitbucket.org']:
print(key)#DEFAULT默认会跟着所有块一起走
3.增删改查
(1)删除:config.remove_section('')(注:此操作会产生覆盖,不是修改)
删除块: config.remove_section('topsecret.server.com')
import configparser # 配置文件
config = configparser.ConfigParser()
config.read('example.ini')
config.remove_section('topsecret.server.com')
config.write(open('example.ini','w'))#覆盖(注:已有文件是固定模式不可修改,所以把文件重写覆盖)
print(config.has_section('topsecret.server.com'))#检查'topsecret.server.com'块是否被删除,被删除打印False,否则打印True
删除块下的键值对:config.remove_option('bitbucket.org','user')
import configparser # 配置文件
config = configparser.ConfigParser()
config.read('example.ini')
config.remove_option('bitbucket.org','user')
config.write(open('example.ini','w'))
(2)修改:config.set('bitbucket.org','user','eric')#键值对
import configparser # 配置文件
config = configparser.ConfigParser()
config.read('example.ini')
config.set('bitbucket.org','user','eric')
config.write(open('example.ini','w'))#覆盖(注:已有文件是固定模式不可修改,所以把文件重写覆盖)
正则表达式
pattern 规则
注:逗号本身就是一个普通字符
flags 标志位(修改规则)
1.正则表达式式用来 匹配 字符串的(普通字符,元字符)
2.匹配:
s='hellow word'
print(s.find('llo'))
ret=s.replace('ll','xx')
print(ret)
print(s.split('w'))
#string提供的方法式完全匹配
3.引入正则表达式:模糊匹配
import re
rets=re.findall('\w','hello word')
print(rets)#['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'd']
4.正则表达式是c编写的一个引擎,正则表达式其实是一种语言
5.正则表达式拥有自己的元字符
6.元字符:. ^ $ * + ? {} [] | () \ (11个元字符)
.通配符 用法:点只能匹配一位字符但点不能代指特殊的换行符
import re
ret=re.findall('w..l','hello world')
print(ret)
^尖角符 用法:只从开始匹配,有就打印,没有就不打印
import re
ret=re.findall('^h...o','hasdfhhello')
print(ret)
$符 用法:从结尾开始匹配,有就打印,没有就不打印
import re
ret=re.findall('e..c$','asdfgaSfderic')
print(ret)
*符(范围[0,正无穷]) 作用:重复匹配(有0个)
import re
ret=re.findall('e.*ic','aSfderadsdfghjfasicli')# *把.多次重复
print(ret)
rets=re.findall('er*','aSfdeeeeradsdfghjfasicli')
print(rets)#['e', 'e', 'e', 'er']
+符(范围[1,正无穷]) 作用:(至少有一个)
import re
ret=re.findall('ab+','abbbSfdeeeeradsdfghjfasicli')#匹配a到无穷个b,但没有b
print(ret)#['abbb']
rets=re.findall('a+b','aaaaabbSfdeeeeradsdbfghjfasicliab')#匹配无穷个a到b,至少有一个ab
print(rets)#['aaaaab','ab']
?符(范围[0,1]) 作用:只能匹配0到一次
import re
ret=re.findall('a?b','abbbSfdeeeeradsdfbghjfasicli')
print(ret)
{}符(范围任意)作用:任意规定匹配范围 1到正无穷{1,}等价于{1,正无穷}
import re
ret=re.findall('a{5}b','aaaaaabbbsdfbghjfasicli')#至少要有5个a
print(ret)
rets=re.findall('a{1,5}b','aaaaabbb')#默认最大位,数贪婪匹配
print(rets)
结论:*等于{0,正无穷} +等价于{1,正无穷} ?等价于{0,1} d都推荐使用前者
字符集
[]符 作用(1):多选一['','']
import re
ret=re.findall('a[c,d]x','acx')#二选一c或d(或关系)
print(ret)
rets=re.findall('a[c,d,e]x','aex')#三选一
print(rets)
作用(2):范围[a-z1-9]
import re
ret=re.findall('[a-z]','acx')#匹配范围
print(ret)
import re
ret=re.findall('[1-9a-zA-Z]','12asAS')#默认会遍历所有
print(ret)
rets=re.findall('[1-9,a-z,A-Z]','45exQW')#默认会遍历所有
print(rets)
作用(3):取消元字符的特殊功能
import re
ret=re.findall('[w,*]','*acx')#取消元字符的特殊功能
print(ret)#['*']
注:有三个符号例外(\ ^ -),[]不起作用
[]加^ 作用:取反的意思[^]
import re
ret=re.findall('[^2]','12asAS')
print(ret)#['1', 'a', 's', 'A', 'S']
rets=re.findall('[^4,5]','45exQW')#非(1,2)一组
print(rets)
\符 作用(1):反斜杠后面跟元字符去除特殊功能
ret = re.search('s\.','s.gz').group()
print(ret)
作用(2):反斜杠后面跟普通字符实现特殊功能
ret = re.search('s\+','s+gz').group()
print(ret)
特殊意义字符:
\d 匹配任何十进制数;它相当于类[0-9]
print(re.findall('\d{11}','afddasdfga123456789946453132'))
\D 匹配任何非数字字符;它相当于类[^0-9]
print(re.findall('\D{11}','afddasdfgaggg123456789946453132'))
\s 匹配任何空白字符;它相当于类[\t\n\r\f\v]
print(re.findall('\sasd','afdd asdfgaggg453132'))
\S 匹配任何非空白字符;它相当于类[^\t\n\r\f\v]
print(re.findall('\Sasd','afddasdfgaggg453132'))
\w 匹配任何字母数字字符;它相当于类[a-zA-Z0-9_]
print(re.findall('\wasd','afddasdfgaggg453132'))
\W 匹配任何非字母数字字符;它相当于类[^a-zA-Z0-9_]
print(re.findall('\Wasd','afdd asdfgaggg453132'))
\b 匹配一个单词边界,也就是单词和空格之间的位置(任何特殊字符的边界都可以捕捉到)
print(re.findall(r'I\b','I am hello LIsrw'))
\\ 特殊意义:
ret = re.findall(r'\\','abc\de')
print(ret)
#加r表示原生字符串没有特殊意义
rets = re.findall(r'\bblow','blow')#注:python里面解释\会进行转意成\\
print(rets)
注意:*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配
*符 作用:把前面一个匹配[0,正无穷]次
+符 作用:把前面一个匹配[1,正无穷]次
?符 作用:惰性匹配,取最少的
()符 作用:分组
import re
#+表示匹配()中一个组的内容
print(re.search('(as)+','sdjkfasas').group())#asas
print(re.search('(as)|3','as3').group())#as
拓展:
ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})','weeew34ttt123/ooo')
print(ret.group())
print(ret.group('id'))
print(ret.group('name'))
|符 管道符 作用:或的意思
re模块: re模块是正则表达式模块
调用方法:import re
#正则表达式的方法
1.re.findall():完全匹配(所有结果都返回到一个结果里)
2.re.search():匹配出第一个满足的结果(返回匹配到的第一个对象(object),对象可以调用group()返回结果)
import re
ret = re.search('s.b','sebdgfadfhgarsab')
print(ret)#<re.Match object; span=(0, 3), match='seb'>
print(ret.group())#seb
3.re.match():只在字符串开始匹配时匹配
import re
ret=re.match('asd','fsddfgasd')
print(ret)#None
rets=re.match('asd','asdfsdfa')
print(rets.group())
4.re.split():通过指定分隔符对字符串进行切片
import re
ret=re.split('[k,s]','asdffksjdhjdcf')
print(ret)
rets=re.split('[j,s]','djksal')
print(rets)
rett=re.split('[j,s]','sdjksal')#注:有一个空,空是分出来的
print(rett)
5.re.sub():匹配替换
import re
ret=re.sub('a..x','s..b','asdfdfasalexdfgdfh')#替换,re.sub(pattern,repl,string,count,…)
print(ret)#asdfdfass..bdfgdfh
6.re.compile():该函数根据包含的正则表达式的字符串创建模式对象,可以实现更有效率的匹配。
import re
#第一种方法
bnv=re.compile('\.com')#规则,ret是规则对象
ret=bnv.findall('asdfasd.comasdf')
print(ret)
#第二种方法
print(re.findall('\.com','asdfasd.comasdf'))
configparser模块-正则表达式-re模块
最新推荐文章于 2021-12-15 10:16:42 发布