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 picklemenu = {‘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模块—— CounterCounter目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为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("abcdefgab")
>>> c["a"]
2
>>> c["c"]
1
>>> c["h"]
0
计数器的更新(update和subtract)

可以使用一个iterable对象或者另一个Counter对象来更新键值。

计数器的更新包括增加和减少两种。其中,增加使用update()方法:

计数器的更新(update)

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

减少则使用subtract()方法:

计数器的更新(subtract)

>>> c = Counter(‘which‘)
>>> c.subtract(‘witch‘)  # 使用另一个iterable对象更新
>>> c[‘h‘]
1
>>> d = Counter(‘watch‘)
>>> c.subtract(d)  # 使用另一个Counter对象更新
>>> c[‘a‘]
-1键的修改和删除

当计数值为0时,并不意味着元素被删除,删除元素应当使用del

键的删除

>>> c = Counter("abcdcba")
>>> c
Counter({‘a‘: 2, ‘c‘: 2, ‘b‘: 2, ‘d‘: 1})
>>> c["b"] = 0
>>> c
Counter({‘a‘: 2, ‘c‘: 2, ‘d‘: 1, ‘b‘: 0})
>>> del c["a"]
>>> c
Counter({‘c‘: 2, ‘b‘: 2, ‘d‘: 1})其他常用操作

下面是一些Counter类的常用操作,来源于Python官方文档

Counter类常用操作

sum(c.values())  # 所有计数的总数
c.clear()  # 重置Counter对象,注意不是删除
list(c)  # 将c中的键转为列表
set(c)  # 将c中的键转为set
dict(c)  # 将c中的键值对转为字典
c.items()  # 转为(elem, cnt)格式的列表
Counter(dict(list_of_pairs))  # 从(elem, cnt)格式的列表转换为Counter类对象
c.most_common()[:-n:-1]  # 取出计数最少的n个元素
c += Counter()  # 移除0和负值
 
 

 
 

原文地址:https://www.cnblogs.com/Godisgirl/p/10013661.html

时间: 2024-10-05 13:50:17

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

python中的关键字---5(时间/随机模块)

模块 什么是模块?模块就是别人写好的代码,放在一个py文件里,给你使用 模块有几种?三种 : 内置模块\第三方模块\自定义模块 模块是好的 为什么要有模块? 写好了之后直接给你用 - 方便了用户的使用,提高了开发效率 为了节省内存,所以把常用的(但是不是每一个程序都必须用到的)函数\方法 根据分类来将这些函数分到不同的文件中存储起来 所以我们用到哪一类方法,才把这类方法所在的模块导入到内存中,能够最大限度的节省内存 内置函数 是每一个py程序在启动的时候都会加载到内存空间中的内置模块 是以文件的

Python中的关键字

关键字 keyword 是编程语言中规定具有特殊用途的单词,在编程中不能使用和关键字相同的 标识符.函数名.类名.属性名.方法名. 在Python中可以通过keyword模块来查看具体关键字,代码如下: 1 import keyword #导入模块 2 print(keyword.kwlist) #输出kwlist列表

python中的关键字---1

变量命名规则: 1.变量由字母数字下划线组成2.变量不能以数字开头3.禁止使用python中关键字4.禁止使用中文和拼音5.变量名要区分大小写6.变量名要有意义7.推荐写法. 驼峰体. 大驼峰.AgeOfOldboy 小驼峰.ageOfOldboy 下划线.age_of_oldboy 字符串规则: 字符串拼接,字符串只能和字符串相加字符串不能减法字符串只能和数字相乘字符串不能进行相除 基础数据类型 int,整形,用于计算和比较str字符串,字符串只能和字符串相加,字符串只能和数字相乘bool布尔

python中的关键字global和nonlocal

知识点: global将一个变量变为全局变量 nonlocal改变最近的变量,又不是全局作用. 1.global 在python中,当引用一个变量的时候,对这个变量的搜索按找本地作用域(Local).嵌套作用域(Encolosing function locals).全局作用域(Global).内置作用域(builtins模块)的顺序来进行的,即所谓的LEGB规则. m = 1 #全局 def fun1(): m = 2 #嵌套 def fun2(): m = 3 #本地 fun2() fun1

python中的关键字---4(匿名/递归函数)

匿名函数 # 匿名函数 别称 : lambda表达式# 函数,没有名字# def wahaha(n):# return n**2# print(wahaha.__name__) # qqxing = lambda n : n**2# print(qqxing.__name__)# ret = qqxing(8)# print(ret) # f = lambda *args:sum(args)# ret = f(1,2,3,4,5)# print(ret) # 写匿名函数 : 接收两个参数,返回较

python中super关键字的用法

class A: def __init__(self):    print "enter A"    print "leave A" class B(A): def __init__(self):    print "enter B"    A.__init__(self)   # old method    print "leave B" >>> b = B() enter B enter A leave

python中的关键字---2(函数基础类)

函数基础 定义函数: def 函数名(): 缩进 函数体(代码块) 调用函数: 函数名 + () 小括号 执行顺序: def func(): 1 print('这大佬黑') 3 func()调用 2 函数的返回值: def func(): 1 print('这大佬黑') 3 return '今晚不溅不散' func()调用 2 返回一个参数的时候是它本身,返回多个就是元组形式显示 当函数体执行到return的时候就结束函数 不写return的时候 默认返回None 写了return不写返回值的时

查看python中的关键字

使用keyword模块验证和查看python关键字 import keyword导入模块 print(keyword.kwlist)打印查看关键字列表 验证某字段是否是python关键字keyword.iskeyword('字段名')

python 中一些关键字的区别

一.raw_input 和input input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的 1.当输入为纯数字时 input返回的是数值类型,如int,float raw_inpout返回的是字符串类型,string类型 2.当输入为字符串表达式时 input会计算在字符串中的数字表达式,而raw_input不会. 比如输入 “57 + 3”: input会得到整数60 raw_input会得到字符串”57 + 3” 比如输入 “5,4,