days3

来源:互联网 发布:周末网络国债理财申请 编辑:程序博客网 时间:2024/06/17 05:14

参考文档

http://www.cnblogs.com/alex3714/articles/5717620.html

集合

集合是一个无序的,不重复的数据组合,它的主要作用如下:去重:把一个列表变成集合,就自动去重了关系测试:测试两组数据之前的交集、差集、并集等关系常用操作list_1 = [1, 4, 6, 7, 4, 6, 9]list_1 = set(list_1)print(list_1, type(list_1))list_2 = set([2, 4, 6, 32, 21])print(list_1, list_2)print(list_1.intersection(list_2))  # 取出交集print(list_1.union(list_2))  # 并集print(list_1.difference(list_2))  # 差集|list_1里面有,list_2里面没有print(list_1.issubset(list_2))  # 子集print(list_1.issuperset(list_2))  # 父集print(list_1.isdisjoint(list_2))    #是否有交集运算符print(list_1 & list_2)  # 交集print(list_1 | list_2)  # 并集print(list_1 - list_2)  # 差集print(list_1 ^ list_2)  # 对称差集s = set([3,5,9,10])      #创建一个数值集合  t = set("Hello")         #创建一个唯一字符的集合  a = t | s     # t 和 s的并集  b = t & s     # t 和 s的交集  c = t – s     # 求差集(项在t中,但不在s中)    d = t ^ s     # 对称差集(项在t或s中,但不会同时出现在二者中) 基本操作:  t.add('x')            # 添加一项  s.update([10,37,42])  # 在s中添加多项  使用remove()可以删除一项:  t.remove('H')  len(s)  set 的长度  x in s  测试 x 是否是 s 的成员  x not in s  测试 x 是否不是 s 的成员  s.issubset(t)  s <= t  测试是否 s 中的每一个元素都在 t 中  s.issuperset(t)  s >= t  测试是否 t 中的每一个元素都在 s 中  s.union(t)  s | t  返回一个新的 set 包含 s 和 t 中的每一个元素  s.intersection(t)  s & t  返回一个新的 set 包含 s 和 t 中的公共元素  s.difference(t)  s - t  返回一个新的 set 包含 s 中有但是 t 中没有的元素  s.symmetric_difference(t)  s ^ t  返回一个新的 set 包含 s 和 t 中不重复的元素  s.copy()  返回 set “s”的一个浅复制   

文件操作

f = open('lyrics',encoding='utf-8') #打开文件first_line = f.readline()print('first line:',first_line) #读一行print('我是分隔线'.center(50,'-'))data = f.read()# 读取剩下的所有内容,文件大时不要用print(data) #打印文件f.close() #关闭文件打开文件的模式有:r,只读模式(默认)w,只写 [不可读:不存在则创建,存在则删除内容;]a,追加 [可读:不存在则创建,存在则只追加内容(在末尾追加);]"+" 表示可以同时读写某个文件r+,可读写文件 [可读|可写|可追加]w+,写读a+,同a"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)rUr+U"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)rbwbabwith语句为了避免打开文件后忘记关闭,可以通过管理上下文,即:----------with open('log','r') as f:    ...----------如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。'''# 注意制定编码格式|打开文件并且把内容读出来# data = open('yestady', encoding='utf-8').read()# 注意必须按标准打开文件(文件名|打开格式)w:创建文件|覆盖之前的# 文件句柄(包含|文件名|字符集|文件内容起始位置等)a:append追加|追加在文件后面|不能读r+ 读写|追加:在末尾追加w+ 写读|先创建一个文件再写|源文件被清空a+ 追加读|可以追加读rb 二进制格式去读文件|使用:网络socket传输wb 二进制文件写|直接写,不能读'''

操作实例

f = open('yestady','rw+', encoding='utf-8') #打开文件的正确姿势# 打开文件|赋给f的是一个内存对象(文件句柄(字符集|大小|位置等))data = f.read()data2 = f.read()print(data)print('---data---', data2)f.read()

这里写图片描述

f.read()    #一次性读所有|只适合读小文件f.write(str)''' w写需要有w模式,但是 w 打开是创建一个文件,故会覆盖之前的文件如果需要写多行,记得加\n'''打印前5行----------for i in range(5):        print(f.readline().strip())  #去掉换行----------第10行不打印(low)----------for index,line in enumerate(f.readlines()):     if index ==9:         print('---我是分割线---')         continue     print(line.strip())----------第10行不打印(此方法更高效)----------count = 0for line in f:    print(line.strip())  # 已变成迭代器|只保存当前的一行    count += 1    if count == 9:        print('---我是分割线---')        continue----------文件句柄----------print(f.tell())  # 读取文件句柄的位置print(f.readline())print(f.tell())  # 根据字符计数f.seek(0)  # 移动文件句柄的位置print(f.tell())print(f.encoding)  # 打印文件编码----------print(f.isatty())  # 查看是否是终端设备print(f.seekable())  # 是否可以移动句柄print(f.readable())  # 判断文件是否可读print(f.writable())  # 判断文件是否可写

flush方法打印进度条

import sys, timefor i in range(20):    sys.stdout.write('-*')    sys.stdout.flush()      # 每打印一个刷新一次,否则会等缓存区满了一次性打印出来    time.sleep(0.1)

文件修改

f = open('yestady', 'r', encoding='utf-8')f_new = open('yestady.back', 'w', encoding='utf-8')for line in f:    if '就如夜晚的微风' in line:        line = line.replace('就如夜晚的微风', 'So clod!!')    f_new.write(line)f.close()f_new.close()

with操作文件

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。with open('yestady', 'r', encoding='utf-8') as f:   for line in f:       print(line.strip())同时打开多个文件with open('yestady', 'r', encoding='utf-8') as f, \        open('yestady.back', 'r', encoding='utf-8') as f2:#代码规范性(每行不超过80个字符)

程序练习

1.实现简单的shell sed 替换功能2.修改haproxy配置文件

字符编码与转码

unicode  万国码详细文章:http://www.cnblogs.com/yuanchenqi/articles/5956943.htmlhttp://www.diveintopython3.net/strings.html需知:1.在python2默认编码是ASCII, python3里默认是unicode2.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#不同编码之间的转换,都必须经过unicodeimport sysprint(sys.getdefaultencoding())     #打印字符编码格式s = '你好'print(s.encode('gbk'))print(s.encode('gbk').decode('gbk').encode('gb2312'))print(s.encode('gbk').decode('gbk').encode('gb2312').decode('gb2312'))

这里写图片描述

原创粉丝点击