python_day2:基本数据及文件操作
一、基本数据类型
1、py3中所有的整数均为整型(int),浮点型(float)用来处理带有小数的数字,复数(complex);
2、布尔值:真(true)or 假(false)、1 or 0;
3、字符串:“hello world” 在py3中输入的一般都是字符串类型;
字符串拼接:%s,整数%d,浮点数%f
1 name = "Alpari" 2 print("I am %s" %name) 3 #输出:I am Alpari
字符串操作:
1 name.capitalize() 首字母大写 2 name.casefold() 大写全部变小写 3 name.center(50,"-") 输出 '---------------------a----------------------' 4 name.count('a') 统计a出现次数 5 name.encode() 将字符串编码成bytes格式 6 name.endswith("a") 判断字符串是否以a结尾 7 name.find('a') 查找a,找到返回其索引,找不到返回-1 8 9 format : 10 >>> msg = "my name is {}, and age is {}" 11 >>> msg.format("a",18) #位置参数 12 'my name is a, and age is 18' 13 >>> msg = "my name is {1}, and age is {0}" 14 >>> msg.format("a",18) #根据索引 15 'my name is 18, and age is a' 16 >>> msg = "my name is {name}, and age is {age}" 17 >>> msg.format(age=18,name="a") #关键参数 18 'my name is a, and age is 18' 19 format_map 20 >>> msg.format_map({'name':'a','age':18}) 21 'my name is a, and age is 18' 22 23 24 msg.index('a') 返回a所在字符串的索引 25 26 '9'.isdigit() 是否整数 27 name.isnumeric() 28 name.istitle() 29 name.isupper() 30 "+".join(['1','2','3']) #输出为:1+2+3 31 32 >>> "my hobby is play games".replace("m","M",1) 33 "My hobby is play games" 34 35 msg.swapcase 大小写互换 36 37 >>> n4.ljust(40,"-") 38 'Hello world-----------------------------' 39 >>> n4.rjust(40,"-") 40 '-----------------------------Hello world' 41 42 >>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
4、列表(有序):
定义列表
1 names = ["dog","cat","pig"] 2 #通过下标访问元素,下标从0开始 3 >>>names[0] 4 "dog" 5 >>>names[-1] 6 "pig"
列表操作
1 >>> names = ["dog","cat","pig","tiger","mouse"] 2 >>> names[1:3] #取下标1至下标3之间的数字,包括1,不包括3 3 ["cat","pig","tiger"] #[左闭右开) 4 >>> names[1:-1] #取下标1至-1的值,不包括-1 5 ["cat","pig","tiger"] 6 >>> names[:3] #如果是从头开始取,0可以忽略 7 ["dog","cat","pig"] 8 >>> names[3:] #如果想取最后一个,不能写-1,只能: 9 ["tiger","mouse"] 10 >>> names[3:-1] #这样-1就不会被包含了 11 ["tiger"] 12 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个,默认为1 13 ["dog","pig", "mouse"] 14 >>> names[::2] #和上句效果一样 15 ["dog","pig", "mouse"]
1 >>>names 2 ["dog","cat"] 3 >>>names.append["new_pig"] #默认追加到末尾 4 >>>names 5 ["dog","cat","new_pig"]
1 >>>names 2 ['dog','cat','pig'] 3 >>>names.insert(2,'tiger') #插到索引2的位置 4 ['dog','cat','tiger','pig']
1 >>>names 2 ['dog','cat','pig'] 3 >>>names[1] = 'mouse' 4 >>>names 5 ['dog','mouse','pig']
1 >>>n 2 ['a','b','c','d','e','f','g'] 3 >>>del n[2] #删除索引项 4 >>>n 5 ['a','b','d','e','f','g'] 6 >>>n.remove('b') #删除指定元素 7 >>>n 8 ['a','d','e','f','g'] 9 >>>n.pop() #删除最后一项 10 >>>n 11 ['a','d','e','f']
1 >>> names 2 ['a', 'b', 'c', 'd'] 3 >>> b = [1,2,3] 4 >>> names.extend(b) 5 >>> names 6 ['a', 'b', 'c', 'd', 1, 2, 3]
1 import copy 2 names = ["dog","cat",['a','b'],"pig"] 3 name2 = names.copy() #浅copy,只copy第一层 4 name3 = names.deepcopy() #深copy 5 names[1] = "CAT" 6 names[2][1] = "B" 7 print(names,name2,name3) 8 #输出:names = ["dog","CAT",['a','B'],"pig"] 9 #name2 = ["dog","cat",['a','B'],"pig"] 10 #name3 = ["dog","cat",['a','b'],"pig"]
1 >>> names 2 ['A', 'a', '$c', '1', 'B', '2', '3'] 3 >>> names.sort() #py3不同数据类型不能在一起排序 4 >>> names 5 ['$c','1', '2', '3', 'A', 'B', 'a'] #特殊字符>数字>大写>小写 6 >>> names.reverse() #反转 7 >>> names 8 ['a','B','A', '3', '2', '1','$c']
1 >>>names 2 ['a','b','c','d','a'] 3 >>>names.count('a') 4 2 5 >>>names.index('a') 6 0 #只找到第一个并返回
5、元组
跟列表差不多,只不过创建后不可修改,为只读列表。
1 names = ('dog','cat') 2 #只有2个方法:count 和 index
6、字典(无序)
创建字典
1 dict_person = {"name":"cat","hobby":"eat"} 2 #字典无序,key关键字唯一
字典操作
1 >>>dict_person["age"] = 1 2 >>>dict_person 3 {"name":"cat","hobby":"eat","age":1}
1 >>>dict_person["name"] = "Cat" 2 >>>dict_person 3 {"name":"Cat","hobby":"eat","age":1}
1 >>>dict_person 2 {"name":"Cat","hobby":"eat","age":1} 3 >>>dict_person.pop("age") #标准删 4 {"name":"Cat","hobby":"eat"} 5 >>>del dict_person("hobby") 6 {"name":"Cat"} 7 8 >>>dict_person.popitem() #随机删除
1 >>>dict_n 2 {"name":"Cat","hobby":"eat"} 3 >>>"name" in dict_n 4 True 5 >>>dict_n.get("name") 6 "Cat" 7 >>>dict_n("name") #结果同上,但如果没有key,则报错,get返回none
1 #方法1 2 for key in dict_n: 3 print(key,info[key]) 4 5 #方法2 6 for k,v in dict_n.items(): #会先把dict转成list,数据大时莫用 7 print(k,v)
7、集合
集合是无序、不重复的数据组合,主要去重、关系测试
1 s = set([1,2,3,4]) #创建一个数值集合 2 t = set("yes") #创建一个唯一字符的集合 3 a = t | s # t 和 s的并集 4 b = t & s # t 和 s的交集 5 c = t – s # 求差集(项在t中,但不在s中) 6 d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中) 7 8 基本操作: 9 t.add('no') # 添加一项 10 s.update([5,6,7]) # 在s中添加多项 11 12 使用remove()可以删除一项: 13 t.remove('no') 14 15 len(s) 16 set 的长度 17 18 x in s 19 测试 x 是否是 s 的成员 20 21 x not in s 22 测试 x 是否不是 s 的成员 23 24 s.issubset(t) #子集 25 s <= t 26 测试是否 s 中的每一个元素都在 t 中 27 28 s.issuperset(t) #父集 29 s >= t 30 测试是否 t 中的每一个元素都在 s 中 31 32 s.union(t) == s | t 33 s.intersection(t) == s & t 34 s.difference(t) == s - t 35 36
二、数据运算
算数运算:

比较运算:

赋值运算:

逻辑运算:

成员运算:

身份运算:

位运算:

运算符优先级:

更多:this
三、文件操作
1 f = open('files') #打开文件 2 first_line = f.readline() 3 print(first_line) #读一行 4 5 data = f.read()# 读取剩下的内容,文件大时不要用 6 print(data) #打印文件 7 f.close() #关闭文件
打开文件的模式有:
- 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
1 def close(self, *args, **kwargs): # real signature unknown 2 关闭文件 3 pass 4 5 def fileno(self, *args, **kwargs): # real signature unknown 6 文件描述符 7 pass 8 9 def flush(self, *args, **kwargs): # real signature unknown 10 刷新文件内部缓冲区 11 pass 12 13 def isatty(self, *args, **kwargs): # real signature unknown 14 判断文件是否是同意tty设备 15 pass 16 17 def read(self, *args, **kwargs): # real signature unknown 18 读取指定字节数据 19 pass 20 21 def readable(self, *args, **kwargs): # real signature unknown 22 是否可读 23 pass 24 25 def readline(self, *args, **kwargs): # real signature unknown 26 仅读取一行数据 27 pass 28 29 def seek(self, *args, **kwargs): # real signature unknown 30 指定文件中指针位置 31 pass 32 33 def seekable(self, *args, **kwargs): # real signature unknown 34 指针是否可操作 35 pass 36 37 def tell(self, *args, **kwargs): # real signature unknown 38 获取指针位置 39 pass 40 41 def truncate(self, *args, **kwargs): # real signature unknown 42 截断数据,仅保留指定之前数据 43 pass 44 45 def writable(self, *args, **kwargs): # real signature unknown 46 是否可写 47 pass 48 49 def write(self, *args, **kwargs): # real signature unknown 50 写内容 51 pass
with语句
为了避免打开文件忘记关闭,可用with语句:
with open("files","r") as f: pass
文件操作完成自动关闭,也可同时打开多个文件。
四、字符编码与转码
1、py2默认编码为ASCII,py3默认为Unicode
2、在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
1 import sys 2 print(sys.getdefaultencoding()) #打印默认编码 3 4 msg = "我爱你" 5 #msg_gb2312 = msg.decode("utf-8").encode("gb2312") 6 msg_gb2312 = msg.encode("gb2312") #默认就是unicode,不用再decode 7 gb2312_to_unicode = msg_gb2312.decode("gb2312") 8 gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8")

浙公网安备 33010602011771号