1.re模块
作用:匹配字符串(模糊匹配)
元字符: . * + {} ^ $ [] | () \
1.1 re方法
findall() 返回所有满足匹配条件的结果,放在列表里
search() 返回第一个满足匹配结果的对象,可以调用group()方法来拿到符合匹配结果的字符串
match() 在字符串开始进行匹配,返回符合匹配结果的一个对象
split() 按某个 字符 进行分割
sub(pattern, string, new) 在string中寻找pattern进行替换
compile() :编译一个表达形式,返回该表达格式的对象
"Compile a regular expression pattern, returning a Pattern object."
obj``=``re.``compile``(``'\d{3}'``)
ret``=``obj.search(``'abc123eeee'``)
print``(ret.group())``#123
1.2 . : 通配符
可以匹配除换行外任意字符
1.3 * + {} ? 多次匹配字符
# *: 多次匹配[0,+oo) 贪婪匹配
ret = re.findall('hel*','hello worldhe')
print(ret) # #['hell', 'he']
# +: 多次匹配[1,+oo)
ret=re.findall('hel+','hello worldhe')
print(ret) # ['hell']
# {}:按大括号指定匹配多次
print(re.findall('hel{2}','hello worldhe')) #['hell']
print(re.findall('hel{0}','hello worldhe')) #['he', 'he']
print(re.findall('hel{0,2}','hello worldhe')) #['hell', 'he']
# ? 匹配0或者1次前面表达式片段 非贪婪
1.4 ^ $ 句首句尾匹配符
1.5 [] 字符集:取消元字符的特殊功能
[a-z] 所有小写字母
[A-Z] 所有大写字母
[0-9] 所有数字
[^4,5] 取反,除了(4 逗号 5)
1.6 \ 转义符:使元字符失去特殊功能,使部分字符实现特殊功能
# \d 匹配任何十进制数;它相当于类 [0-9]。
# \D 匹配任何非数字字符;它相当于类 [^0-9]。
# \s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
# \S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
# \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
# \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
# \b 匹配一个特殊字符边界,比如空格 ,&,#等
print(re.findall(r'\\','asfasd\d')) #['\\']
print(re.findall('\\\d','asfasd\d')) #['\\d']
ret=re.findall('I\b','I am LIST')
print(ret) #[] '\b'python识别为特殊字符,再到re库里不能识别
ret=re.findall(r'I\b','I am LIST')
print(ret) #['I'] r'\b'在re库里代表 特殊字符边界
1.7 ( ) : 分组 , | : 或
(?P\d{3}) 给组起名字name
ret=re.search('(ab)|\d','rabhdg8sd')
print(ret.group()) #ab
2.json,pickle模块
2.1序列化:
这里转载:https://www.cnblogs.com/yuanchenqi/articles/5732581.html
把对象(变量)从内存中变成可存储或传输的过程称之为序列化。如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。
2.2方法
dumps():序列化 如字典–>json
loads(): 反序列化
# ----------------------------序列化
import json
dic = {'name': 'alvin', 'age': 23, 'sex': 'male'}
print(type(dic)) # <class 'dict'>
j = json.dumps(dic) # 将字典序列化
print(type(j)) # <class 'str'>
f = open('序列化对象', 'w')
f.write(j) # -------------------等价于json.dump(dic,f)
f.close()
# -----------------------------反序列化
import json
f = open('序列化对象')
data = json.loads(f.read()) # 等价于data=json.load(f)
# dct="{'1':111}"#报错 json 不认单引号
dct='{"1":"111"}'
print(json.loads(dct))
#conclusion:
#无论数据是怎样创建的,只要满足json格式,就可以json.loads出来,不一定非要dumps的数据才能loads
2.3 pickle模块
只用于python,可将函数,类序列化,用法同json
2.4 shelve模块
只用于python,存放字典数据类型
import shelve
f = shelve.open(r'shelve.txt')
# f['stu1_info']={'name':'alex','age':'18'}
# f['stu2_info']={'name':'alvin','age':'20'}
# f['school_info']={'website':'oldboyedu.com','city':'beijing'}
#
#
# f.close()
print(f.get('stu_info')['age'])