Python学习笔记(re,json,pickle模块)

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'])
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装_pickle模块不需要单独操作,因为_picklePython的内置模块。_pickle模块用于序列化对象,即将对象转换成字节流以便存储或传输。在Python中使用_pickle模块可以方便地将对象持久化保存到磁盘上,并在需要时将其读取出来恢复成原来的对象。 在使用Python 3时,默认已经自带_pickle模块,无需进行额外的下载和安装。可以直接在代码中通过`import pickle`来导入_pickle模块,然后使用_pickle模块的相关函数进行对象的序列化和反序列化操作。 常用的_pickle模块函数包括: - dumps(obj):将对象序列化为字节流 - loads(data):将字节流反序列化为对象 - dump(obj, file):将对象序列化并保存到文件中 - load(file):从文件中读取字节流并将其反序列化为对象 在导入_pickle模块后,就可以使用上述函数进行对象的序列化和反序列化操作了。例如,可以使用dumps函数将对象转换成字节流并打印出来,然后使用loads函数将字节流转换回对象。 需要注意的是,使用_pickle模块进行对象的序列化和反序列化时,可能会存在一些安全风险,因为_pickle模块可以执行任意的Python代码。如果需要在不可信的环境下进行对象序列化和反序列化操作,建议使用更安全的序列化模块,如JSON模块。 总之,Python 3已经内置了_pickle模块,可以直接导入并使用相关函数进行对象的序列化和反序列化操作,无需额外的下载和安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值