Python,Day2---基础
本节内容
- 列表、元组操作
- 字符串操作
- 字典操作
- 集合操作
- 文件操作
- 字符编码与转码
1、列表、元祖操作
列表:
# 01 l列表 name_list = ['alwin','tom','alex','tom','jery','jim'] #取单个元素 print (name_list[0]) print (name_list[-1]) #切片--取多个元素 print (name_list[0:3]) #取下表0到3的元素,但是不包括3 print (name_list[:3]) #从头开始取,和上一句效果一样 print (name_list[3:]) #从3开始取到最后一个 print (name_list[1:-1]) #取下表0到-1的元素,但是不包括-1 print (name_list[1::2]) #从1开始取,步长为2 print (name_list[::2]) #从头开始取,步长2 #在尾部追加元素 name_list.append('newname') print (name_list) #在固定索引位置,插入元素 name_list.insert(2,'Sencond') print (name_list) name_list.insert(-1,'last') #注意-1位置插入后,成倒数第二了。。。 print (name_list) # 修改list值 name_list[1]='update_alex' print (name_list) #删除执定元素 del name_list[1] print (name_list) name_list.remove('tom') #删除指定元素 name_list.pop() #删除列表最后一个值 print (name_list) #扩展 b = [1,2,3] name_list.extend(b) #将b的元素追加在name_list后 print (name_list) #拷贝 name_copy = name_list.copy() print (name_copy) #统计 print (name_list.count('alwin')) #统计元素‘alwin’出现的次数 #排序和翻转 print (name_list.sort()) #3.0里不同数据类型不允许一起排序 name_list[-1] = '3' name_list[-2] = '2' name_list[-3] = '1' print (name_list.sort()) print (name_list.reverse()) #反序排序 #获取下表 print (name_list.index('tom')) #只返回找到的第一个下标
元祖:
元祖和列表差不多,也是存一组数,只是它一旦创建,便不能再修改。所以又叫只读列表。如果元祖中某一个元素是变量就可以修改变量值了。
它仅有2个方法:count、index
name = ('tom','jerry','eric','jack')
2、字符串操作
特性:不可修改,修改之后,就会在内存空间开辟一块新得存储空间,存储新字符串;
name ='alwin\talex' print(name.capitalize()) #大写 print(name.casefold()) #全部小写 print(name.center(50,'*')) print(name.count('al')) #统计al出现次数 print(name.encode()) #将字符串编码成bytes格式 print(name.endswith('w')) #判断字符串是否以w结尾 print(name.find('l')) #查找字符串,并返回索引 print(name.index('e')) #返回字符串索引 print(name.expandtabs(10)) #将\t转换为多长得空格 msg = 'my name is {},and age is {}' #字符串格式化 print(msg.format('alwin','18')) # print((msg.isnumeric())) # print(msg.isalnum()) # print(name.isprintable()) print(name.isspace()) print(name.istitle()) print(name.isupper()) print('|'.join(['alex','alwin'])) intab = 'aeiou' outtab = '12345' trantab =str.maketrans(intab,outtab) #字符串翻译规则 str = 'this is string example...wow!!!' print(str.translate(trantab)) #翻译字符串 print(name.partition('\t')) #??? print(name.swapcase()) #大小写互换 print(name.zfill(20)) #输入目标字符串,如果位数不足,左边用0填充 print(name.ljust(20,'_')) #输入目标字符串,如果位数不足,左边用-填充 print(name.rjust(20,'_')) #输入目标字符串,如果位数不足,右边用-填充 print(name.isidentifier()) #检查字符串是否符合变量命名规则
3、字典操作
字典是一种key-value的数据类型:dict是无序得、key必须是唯一的。语法:
info={ 'username':'alwin', 'age':18, 'job':IT, 'Salary':800 }
info={ 'username':'alwin', 'age':18, 'job':'IT', 'Salary':800 } ###########查找################# print('job' in info) #标准用法 print(info.get('username')) #获取 print(info['username']) #同上 #print(info['user']) #如果一个key不存在,就报错,get不会,不存在只返回None ##################################################### info['marry'] = 'yes' #增加 print(info) info['Salary'] = '8000' #修改 print(info) info.pop('marry') #删除 del info['job'] #删除 print(info) info.popitem() #随机删除?删除最后一个 print(info) ###########多级字典嵌套及操作########################### city ={ '四川省':{ '成都市':{ 'cd001':'成华区', 'cd002':'锦江区', 'cd003':'天府新区' }, '绵阳市':{ 'my001':'市区', 'my002':'乡下' } } } print(city) print(city.keys()) #获取key值 print(city.values()) #获取value值 print('-----------------------------') print(city['四川省']) #打印市信息 print(city['四川省']['成都市']) #打印区信息 print(city['四川省']['成都市']['cd001']) #打印具体区 ##############循环############################### #① for key in city: print(key,city[key]) #② 数据量大,不要用这个 for k,v in city.items(): print(k,v)
4、集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个list变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作
s = set([3,5,9,10,12]) #创建数值集合 t = set('hello') #创建一个唯一字符的集合 print('set is:',s,t) #打印结果中,t集合自动去重 a = t | s #t和s的并集 print(a) b = t & s #t、s 的交集是一个空集合 print(b) c = t - s #t和s的差集 print(c) d = t ^ s #对称差集(项在t或s中,但不会同时出现在二者中) print(d) d.add('x') #添加一项 print(d) s.update([10,37,42]) #在s中添加多项 print(s) print(s.remove(12)) #在s中删除一项 print(len(s)) print('w' in s) #测试w是否是s成员 print('w' not in s) #测试w是否不是s成员
5、文件操作
文件操作流程:
①,打开文件,得到文件句柄并赋值给变量
②,通过句柄对文件进行操作
③,关闭文件
基本操作
with open('../file/userinfo.txt') as f: #当with代码块执行完毕时,内部会自动关闭并释放文件资源;在Python 2.7 后,with又支持同时对多个文件的上下文进行管理 first_line = f.readline() #默认读取第一行,如果readline中写了X,就是读取文件前X个字符 print (first_line) data = f.read() #读取剩下的内容,文件大时,不要用 print(data)
r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
r+,可读写文件。【可读;可写;可追加】
w+,写读
a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
rU
r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
rb
wb
ab
6、字符编码与解码
需知:
1.在python2默认编码是ASCII, python3里默认是unicode
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
import sys print(sys.getdefaultencoding()) msg = "我爱北京天安门" #msg_gb2312 = msg.decode("utf-8").encode("gb2312") msg_gb2312 = msg.encode("gb2312") #默认就是unicode,不用再decode,喜大普奔 gb2312_to_unicode = msg_gb2312.decode("gb2312") gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8") print(msg) print(msg_gb2312) print(gb2312_to_unicode) print(gb2312_to_utf8)
特性:不可修改
浙公网安备 33010602011771号