Python3基础12(collections、struct、itertools、chardet等的使用)

import struct
import base64
import itertools
import chardet
from collections import namedtuple,defaultdict,OrderedDict,Counter

# namedtuple 新建1个元组,并设置元素的属性和个数
# namedtuple('名称','列表')
# 例如 namedtuple('Circle', ['x', 'y', 'r'])

# dqueue 高效插入和删除操作的双向列表,适合于队列和栈

# defaultdict 用于键不存在时,返回一个默认值,用于字典中
# 创建默认值的字典
# defaultdict(lambda :'n/a')

# ChainMap

# OrderedDict 使字典有序,用 OrderedDict 按照插入的顺序排列
# 为FIFO(先进先出)的dict,当字典满时,需要再插入数据,会删除最早插入的数据

# Counter 统计字符中各字符的个数
c=Counter()
for i in 'this is a stirng':
c[i]=c[i]+1

print(c)


#base64 用64个字符,表示二进制数据的一种方式,用于处理二进制数据与字符串之间进行转换,可被认为是进行简单加密和解密
# 每3个字节一组 共3*8=24bit 每组6bit
# 二进制数据不足3的倍数,则在x00后加上不定数的=,加几个=,则表示补了几个字节
# 适用于不重要的信息进行加密,一般用户证书 cookie 网页 及在url传输少量二进制数据

# struct 用于处理bytes与其他二进制数据之间的转换

# 任意类型->bytest
# > 网络序 I 无符号整数
result=struct.pack(">I",24)
print(result)

# bytes->任意类型
# 后面的bytes依次变为I H 4字节无符号整数 I 2字节无符号整数
result=struct.unpack(">IH",b'xf0xf0xf0xf0x80x80')
print(result)


# itertools 用于操作迭代对象

#把一个序列无线重复下去
# itertools.cycle()

#把一个元素无线重复下去,除非指定次数
# itertools.repeat()

# 可通过条件判断取出一个有限序列
c=itertools.count(1,5)
r=itertools.takewhile(lambda x:x<=10,c)
print(list(r))

# 可以把一组迭代对象串联起来,形成一个更大的迭代器
itertools.chain()

# 把迭代器中相邻的重复元素挑出来放在一起,返回值做为组的key
for key,group in itertools.groupby("testing",lambda t:t.upper()):
print(key,list(group))


# xml 用于处理xml格式文件及格式数据
# sax:流模式 边解析边读,占用内存小,解析快,需要自定义处理事件
# dom:树模式 解析慢 占用内存大,但可以遍历任意节点

# chardet 用于检测对象使用了哪类编码
# result=chardet.detect(b"test")
data="test".encode('utf-8')
result=chardet.detect(data)
print(result)
原文地址:https://www.cnblogs.com/NiceTime/p/10089510.html