【python基础学习】集合and文件

【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,林达看美国

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值