days3

参考文档

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+ 模式同使用)
rU
r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

rb
wb
ab

with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:
----------

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 = 0
for 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, time

for 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.html

http://www.diveintopython3.net/strings.html

需知:

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

#不同编码之间的转换,都必须经过unicode
import sys
print(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'))

这里写图片描述

资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值