base64和collections笔记
2021-01-31 本文已影响0人
lk_erzanml
import base64
# base64是一种将不可见字符转换为可见字符的编码方式。
# 用在不能传明文,url,cookie,传输图片
# Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。
'''
if __name__ == '__main__':
s = 'plain text'
# base64编码
t = base64.b64encode(s.encode('UTF-8'))
print(t)
# base64解码
t = base64.b64decode(t)
print(type(t))
print(t)
# base32编码
t = base64.b32encode(s.encode('UTF-8'))
print(t)
# base32解码
t = base64.b32decode(t)
print(t)
# base16编码
t = base64.b16encode(s.encode('UTF-8'))
print(t)
# base16解码
t = base64.b16decode(t)
print(t)
'''
# 编码之后的+和/在请求中传输的时候可能会出问题,使用urlsafe_b64encode方法会自动将:
#
# +映射为-
# /映射为_
# 这样加密之后的就都是在网络上传输安全的了。
'''
if __name__ == '__main__':
s = 'hello, world'
t = base64.urlsafe_b64encode(s.encode('UTF-8'))
print(t)
t = base64.urlsafe_b64decode(t)
print(t)
'''
# 直接对流进行编码
# 加密和解密的时候可以直接传入一个流进去,base64模块加密方法会从输入流中读取数据进行加密,同时将结果写到输出流中。
import base64
from io import BytesIO
if __name__ == '__main__':
input_buff = BytesIO()
output_buff = BytesIO()
input_buff.write(b'hello, world')
input_buff.seek(0)
base64.encode(input_buff, output_buff)
s = output_buff.getvalue()
print(s)
from collections import namedtuple
#定义一个带有名字的tuple
Point = namedtuple('Point', ['x', 'y'])
Circle = namedtuple('Circle', ['x', 'y', 'r'])
p = Point(1, 2)
c=Point(2,5)
print(c.x)
print(p.x)
print(isinstance(p,Point))
print(isinstance(p,tuple))
#双向列表
from collections import deque
q = deque(['a', 'b', 'c'])
q.append('x')
q.appendleft('y')
print(q)
# deque(['y', 'a', 'b', 'c', 'x'])
# deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。
#当字典key不存在的时候,让字典不出错并且带有一个默认值
from collections import defaultdict
def aaa():
return "aaa"
dd = defaultdict(aaa)#都行
dd = defaultdict(lambda :"bbb")
dd['key1'] = 'abc'
print(dd['key1'] )# key1存在
# 'abc'
print(dd['key2'] )# key2不存在,返回默认值
# 'bbb'
#有序的字典
from collections import OrderedDict
d = dict([('a', 1), ('b', 2), ('c', 3)])
print(d) # dict的Key是无序的
# {'a': 1, 'c': 3, 'b': 2}
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od) # OrderedDict的Key是有序的
# OrderedDict([('a', 1), ('b', 2), ('c', 3)])
#简单计数器
# Counter是一个简单的计数器,例如,统计字符出现的个数
a="dfasdfasdf"
from collections import Counter
c = Counter(a)
print(c)