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() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
View Code

  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")

 

posted @ 2018-09-27 18:25  睡个好觉"  阅读(163)  评论(0)    收藏  举报