python中的关键字---7(re/序列化/Counter模块)

import re  正则

正则表达式
# 元字符
# \w 数字字母下划线
# \W 非数字字母下划线
# \d 数字
# \D 非数字
# \s 空白符(空格\制表符\换行符)
# \S 非空白符
# \t 制表符
# \n 换行符
# \b 单词的边界

# . 除了换行符以外的所有

# ^ 开始
# $ 结尾
# [..] 字符组
# [^..] 非字符组
# | 或(包含关系中,长的在前面)
# () 分组(在或的两端,在添加量词的时候,findall的时候优先要显示的)
# (123\d)?
# 量词
# {n}
# {n,}
# {n,m}

# ? 0,1
# + 1,~
# * 0,~

# 元字符 --> 一个字符匹配
# 元字符量词 --> 默认贪婪匹配
# 元字符量词? --> 惰性匹配/非贪婪模式



# 转义符 \ : r'正则'

import re    re模块
# re.findall('正则表达式','带匹配的字符')
# ret = re.match('\d+','正则表达式','带匹配的字符')
# ret = re.search('^\d+','正则表达式','带匹配的字符')
# print(ret)
# print(ret.group())
#            参数           返回值
# findall 正则 待匹配字符串 列表,所有符合的项
# search 正则 待匹配字符串 变量,.group取结果,只有一项结果
# match 正则 待匹配字符串 变量,.group取结果,默认在正则之前加上^

import json / pickle   序列化模块
import json
# 把其他的数据类型 -序列化(dumps)-> 字符串
# 字符串 -反序列化(loads)-> 把其他的数据类型
# ret = json.dumps(menu) # 把其他的数据类型 -序列化(dumps)-> 字符串
# # print(ret) # json格式的字符串
# # print(menu) # dict
# with open('file','w',encoding='utf-8') as f:
# f.write(ret)
# with open('file','r',encoding='utf-8') as f:
# dic = f.read()
# print(dic)
# diccc = json.loads(dic) # 字符串 -反序列化(loads)-> 把其他的数据类型
# print(diccc['k'])
# 数据类型 <-转换-> 字符串
# 1.存储在硬盘上 写的每一个字符必须是字符串/bytes数据类型
# 2.网络传输的时候 必须传递bytes/字符串数据类型
# menu = {'key':"value","k":['v']}
# ret = json.dumps(menu)
# dic = json.loads(ret)
# 优缺点:
# 优: 所有的语言都通用
# 缺: 能支持的数据类型少 :dict list str 数字
 
import pickle
# json  dumps/loads
# 字符串的json数据 = json.dumps(其他数据类型)
# 其他数据类型= json.loads(字符串的json数据)

# pickle dumps/loads dump/load
# bytes的pickle数据 = pickle.dumps(其他数据类型)
# 其他数据类型= pickle.loads(bytes的pickle数据)
# pickle.dump(数据类型,文件句柄) # 这个数据类型被写到文件里了
# pickle.load(文件句柄) # 这个文件里的数据类型
import pickle
menu = {'key':"value","k":{'v',1,2}}
# ret = pickle.dumps(menu)
# print(type(ret),ret)
# dic = pickle.loads(ret)
# print(dic)
menu = {'key':"value","k":(1,2,3)}
# ret = pickle.dumps(menu)
# print(type(ret),ret)
# dic = pickle.loads(ret)
# print(dic)
menu = {'key':"value",1:'vvv'}
# ret = pickle.dumps(menu)
# print(type(ret),ret)
# dic = pickle.loads(ret)
# print(dic)
# 序列化模块总结 :
# 将基础数据类型存到文件中再读出来
# 将基础数据类型通过网络传给其他程序,再由其他程序读取并使用
# json
# 优点 : 所有语言通用
# 缺点 : 支持的数据类型少
# 方法和用法:
# dump
# dump(dict/list,文件句柄) # 文件句柄一定是以写的形式打开的
# load
# dict/list = load(文件句柄) # 文件句柄一定是以读的形式打开的
# dumps
# str = dumps(基础数据类型)
# loads
# 基础数据类型 = loads(str)
# pickle
# 优点 : 支持python中几乎所有数据类型
# load文件的时候,可以load多条数据,也可以dump多条数据
# 缺点 : 只支持在python程序之间交换数据
# dump(任意一个需要写到文件中的变量,文件句柄) # 文件句柄,wb/ab形式打开
# load(文件句柄) # 文件句柄是以rb形式打开
# pickle 的dump可以dump多次,load可以load多次
# dumps
# bytes = dumps(基础数据类型)
# loads
# 基础数据类型 = loads(bytes)
 

 

 

collections模块—— Counter
Counter目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。
    计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。
下面的代码说明了Counter类创建的四种方法:
Counter类的创建
>>> c = Counter()  # 创建一个空的Counter类
>>> c = Counter('gallahad')  # 从一个可iterable对象(list、tuple、dict、字符串等)创建
>>> c = Counter({'a': 4, 'b': 2})  # 从一个字典对象创建
>>> c = Counter(a=4, b=2)  # 从一组键值对创建

 

计数值的访问与缺失的键

当所访问的键不存在时,返回0,而不是KeyError;否则返回它的计数。

 

>>> c = Counter('which')
>>> c.update('witch')  # 使用另一个iterable对象更新
>>> c['h']
3
>>> d = Counter('watch')
>>> c.update(d)  # 使用另一个Counter对象更新
>>> c['h']
4

减少则使用subtract()方法:

 




 

 
 

猜你喜欢

转载自www.cnblogs.com/Godisgirl/p/10013661.html