字典,字符串,编码解码
提示:
python中所有类型都是对象,
其中整形,字符串,元组等为不可变类型
列表,字典为可变类型所谓可变和不可变顾名思义,就是一个对象在内存中分配地址后,该地址中的内容是否可以改变。可以在python中通过id()函数查看变量的地址
这里不详细解释,有问题自己吧,当然也可以问我哦。
一. 字典
何谓字典,也许听说过一个词语叫键值对,就是一一映射的关系,python中将这种关系封装起来为一个数据类型为
字典:比如我叫海涛,海涛就是键,我本人就是值。
1. 创建
1 | # 使用**{}**来表示一个字典, |
- 注意:键值对在字典中的存储是乱序存储的,不像列表和元组是严格按照顺序存储,依旧是说不能通过索引下标访问列表元素。
1 | # 通过工厂函数创建字典,列表,元组 |
2. 查询(访问)
1 | print(dic['name']) # 通过键查找 |
3. 修改
1 | dic['name'] = 'haitao' # 该键("name")已有则修改,没有则添加 |
4. 删除
1 | del dic['name'] # 通过del关键字删除 |
5. 其他操作涉及到的方法
1 | dic = dict.fromkeys(['host1','host2','host3'],'test') #列表中每一个都为键,后一个为值 |
6. 字典嵌套(这个没什么好说的。。)。
二. 字符串
顾名思义,就是一串字符
1. 乘法,切片操作
1 | # 乘法操作 |
这里说一下,无论是字符串,还是列表,元组,他们的下标都是从0开始的,而且切片原则是–包头不包尾,所有的涉及到下标的操作方法基本上都是–包头不包尾,java中也是
2. 关键字in 判断
1 | print('hello' in 'hello word') # 判断hello是否在hello world中,,执行结果:True |
3. 格式化输出
- 第一种方法
1
print('name:%s,score:%d' % ('hai tao', 2)) # name:hai tao,score:2
输出格式如上,记住就行,有过c基础的应该能看懂
- 第二种方法
1
2
3
4
5st = 'hello kitty {name} is {age}'
print(st)
# 执行结果:hello kitty {name} is {age}
print(st.format(name='hai tao', age=37)) # 调用st字符对象的format函数传值。
# 执行结果:hello kitty hai tao is 37
4. 字符串拼接
第一种方法
1
2
3
4a = '123'
b = 'abc'
c = a+' '+b # 效率低
print(c) # 通过+号来对字符串进行连接,执行结果:123 abc第二种方法
1
2
3
4a = '123'
b = 'abc'
c = '***'.join([a, 'ABC', b]) # 通过前面的字符拼接,这里的“***”可以替换为任意字符
print(c) # 执行结果:123***ABC***abc
通常使用第二种方法进行字符串的连接,效率高。注意:join中的传入的参数为一个列表
5. String的内置方法
1 | st = 'hello kitty {name} is {age}' |
三. 编码与解码
1. 背景
编码与解码encode and decode
二进制
–>ASCII:只能存英文和拉丁字符,一个字符占一个字节,8位
——->gb2312:只能6700个中文,1980
——–>gbk1.0:存了2万多字符,1995
———->gb18030:27000中文,2000
———->unicode(万国码,一个编码标准):utf-32:一个字符占4个字节
———->unicode(万国码,一个编码标准):utf-16:一个字符占2个字节或者两个以上,65535
———->unicode(万国码,一个编码标准):utf-8:(可变长的),一个英文用ASCII存,一个中文3个字节
2. python3中的编码解码
1 | import chardet,sys |
encode编码时将数据转换成bytes格式
decode解码时将bytes转换成字符串