【python基础学习】集合文件字符编
一、知识回顾
1.字符串是不能够修改的,可以正删查但是不能跟列表一样直接给字符串赋值,所以对字符串的修改等于创建了新的字符串。
2.列表可以嵌套任何东西,如列表嵌套列表,列表嵌套字典。
3.字典是无序的,因为需要用key来寻找值,所以不需要下标来寻找。
二、集合
1.概念
1.定义:集合是一个无序的,不重复的数据组合
2.作用:它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作
2.集合的交集、并集、差集
这里集合的意思应该都明白,就不写了。
list_1 =[1,2,3,4,5,6,7,8,9]
list_1= set(list_1)#把列表变成集合!
list_2 = set([2,6,0,66,22,8,4])
list_3 = set([1,3,7])
list_4 = set([2,4,8])
#打印集合
print(list_1,type(list_1))
print(list_1,list_2)
#求交集
print("交集",list_1.intersection(list_2))
#求并集
print("并集",list_1.union(list_2))
#求差集
print("差集",list_1.difference(list_2))
#求子集
print("判断子集")
print(list_1.issubset(list_2))
print(list_1.issuperset(list_3))
#反向差集
print("对称差集差集",list_1.symmetric_difference(list_2))
#对称
print("判断子集",list_3.isdisjoint(list_4))
print("-----------------------------------------------")
#交集
print(list_1 & list_2)
#并集
print(list_1 | list_2)
#求差集
print(list_1 - list_2)
#求对称差集
print(list_1 ^ list_2)
在------------------------以前是方法,后面是简单的字符表示。
集合的一些方法!例如增删改查等!
list_1 = set([1,3,7])
#添加一项(添加都是随机的!)
list_1.add(999)
print("测试1能否添加",list_1)
#添加多项
list_1.update([888,777,666])
print("测试1能否添加",list_1)
#删除(这个删除也是随机的)
'''
print(list_1.pop())
print(list_1.pop())
print(list_1.pop())
'''
#删除指定的数据
list_1.discard(888)
print(list_1)
这里的删除和添加的位置都是随机的!以后使用时需要注意。
三、文件的操作
对文件操作的主要流程主要有
1.打开文件,得到文件句柄并赋值给一个变量。
2.通过句柄对文件进行操作。
3.关闭文件
规范打开文件后一定要几个关闭着样才是规范的操作。打开文件对象给一个赋值,操作赋值对象对该文件进行操作。这里付给变量的是一个内存对想象(也成为文件句柄,包括文件名、字符集、大小、其实位置,可以理解为地址。)
r为打开文件的读模式w为文件的写模式,只能完成其中的一个。w写文件的形式打开一个文件,它是创建一个文件。
1、读。
1) utf-8编码读
f = open("Yesterday",'r',encoding="utf-8")
date = f.read()
print(date)
2) 二进制读
采用rb进行二进制的读取。
f = open("Yesterday",'rb')
2、写。
1) utf-8编码写
f = open("Yesterday",'w',encoding="utf-8")
f.write("我爱北京天猫妈妈,\n")
f.write("我爱北京天猫爹爹。")
2) 二进制写
采用wb进行二进制的写。
3、追加。
追加操作是在原来内容后面加入新的内容。append只能是在源文件中追加内容,也不能读新的内容。
f = open("Yesterday",'a',encoding="utf-8")
f.write("我爱北京打妈妈......,\n")
f.write("我爱北京天猫爹爹。")
f.close()
5、修改(读和写都可以的操作)
1)读写
此时已追加的方式打开(称这种操作为读写)
f = open("Yesterday",'r+',encoding="utf-8")
print(f.readline())
print(f.readline())
print(f.readline())
f.write("------------帅------------")
print(f.readline())
#此时是以读和追加的形式打开的
如图所示:
读取的:读出了三行的数据。
想要的效果是写在第四行,但是写的结果是在文件后面进行追加如图:
2)写读(这个模式一般不用)
吧r换成w就可以,可见,还是没有达到在任何一个地方可以修改的目的。
f = open("Yesterday",'w+',encoding="utf-8")
结果表示,读不出来想要的内,写是在替换下,创建了新的文件。
3)文件的修改
f = open("Yesterday","r",encoding="utf-8")
f_nwe = open("Yesterday.bak","w",encoding="utf-8")
for line in f:
if "有那么多肆意的快乐等我享受" in line:
line = line.replace("有那么多肆意的快乐等我享受","有那么多肆意的快乐等李先鹏享受")
f_nwe.write(line)
f.close()
f_nwe.close()
整体思路是在原文件中寻找对应的字符创,然后用字符串替换的方法,将要替换的内容换掉,然后再重新写入新的文件中,新文件要求从第一句开始写。所以要对文件进行循环来完成。
4、关闭。
这个关闭劲量别忘记写,虽然系统会默认关闭保存。
f.close()
5、读前五行。
1)方法一:f.readline只适合读小文件
f = open("Yesterday",'r',encoding="utf-8")
# print(f.readline())
for index,line in enumerate(f.readline()):
if index == 9:
print ("------------------分割线")
continue
print(line.strip())
2)方法二:一条一条的读取,节省空间使用。。。。
count = 0
for line in f:
if count == 9:
print ("------------------分割线")
count += 1
continue
print(line)
count += 1
6、将光标移动到指定位置。
这里tell()的指定位置,是未知的如果想要回到指定位置需要对指定位置进行标记。
f = open("Yesterday",'r',encoding="utf-8")
print(f.tell())
print(f.readline())
print(f.tell())
f.seek(0)
print(f.tell())
print(f.readline())
print(f.tell())
7、一些操作方法。
实时刷新和截断
1.with自动关闭文件
with open("Yesterday","r",encoding="utf-8") as f:
for line in f:
print(f.readline())
这里with来帮助我们来关闭文件,为了避免忘记关闭。
2.with可以用来打开多个文件,具有层次性,更直观的看到文件打开的个数
with open("Yesterday","r",encoding="utf-8") as f ,\
open("Yesterday","r",encoding="utf-8") as f2:
for line in f:
print(f.readline())
for line in f2:
print(f2.readline())
四、进度条
这里主要想了解一下两个代码和复习一下flush
import sys,time
for i in range(100):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(0.1)
五、字符编码与转码
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
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M4LUpIZR-1602765653715)(F:\博客\day04\3.png)]
六、推荐的书籍
1,追风筝的人
2,白鹿原
3,林达看美国
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
六、推荐的书籍
1,追风筝的人
2,白鹿原
3,林达看美国