首页 > 代码库 > python集合、文件处理、字符编码

python集合、文件处理、字符编码

1. 集合操作 : 去重

{1, 2, 3, 4, 5, 6, 7, 8, 9}

技术分享
1 list1 = [1,2,3,4,5,5,6,7,8,9]
2 list1 = set(list1)
3 print(list1)
View Code

1.1

集合语法里有个intersection是求两个集合之间的交集

技术分享
 1 list1 = [1,2,3,4,5,5,6,7,8,9]
 2 list1 = set(list1)
 3 print(list1)
 4 
 5 list2 = set([0,1,2,3,44,44,55,555,666,7777])
 6 print(list1,list2)
 7 
 8 list1.intersection(list2)#交集
 9 print(list1.intersection(list2))
10 
11 结果是:{1, 2, 3}
View Code

1.2

集合语法里还有union并集的操作

技术分享
1 list1.union(list2)
2 print(list1.union(list2))
3 
4 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 7777, 555, 44, 55, 666}
5 结果讲两个集合中都打印出来了
View Code

1.3

集合中的差集

print(list1.difference(list2))#差集 意思是list1中有,但是list2中没有 
{4, 5, 6, 7, 8, 9}

1.4 

集合中的子集

技术分享
1 #子集
2 print(list1.issubset(list2))#判断list1是不是list2的子集
3 False
View Code

1.5

集合的父集

技术分享
1 print(list1.issuperset(list2))#判断list2是不是list1的父集
2 False
View Code

1.6

集合的对称差集

技术分享
1 print(list1.symmetric_difference(list2))#反向差集
2 
3 {0, 7777, 4, 5, 6, 7, 8, 9, 555, 44, 55, 666}#将两个集合中交集取反了
View Code

1.7若两个集合间没有交集

技术分享
1 print(list1.isdisjoint(list2))#判断两个集合没有交集返回真
View Code

1.8

集合删除

技术分享
1 print(list1.pop())#删除任意一个内容
View Code

1.9

discard

技术分享
1 list1.discard(10)#删除元素时若不存在则不报错
2 {2, 3, 4, 5, 6, 7, 8, 9}
View Code

 

2.文件操作

技术分享
  1 You were the shadow to my light
  2 你是我生命之光中的一道暗影
  3 Did you feel us
  4 你能理解我们吗
  5 Another Star
  6 另一颗行星
  7 You fade away
  8 你逐渐消失
  9 Afraid our aim is out of sight
 10 恐惧我们的目标迷失在视野
 11 Wanna see us
 12 希望我们互相理解
 13 Alive
 14 活着
 15 Where are you now
 16 你身在何方?
 17 Where are you now
 18 你身在何方?
 19 Where are you now
 20 你身在何方?
 21 Was it all in my fantasy
 22 难道这一切都在我的幻想里
 23 Where are you now
 24 你身在何方?
 25 Were you only imaginary
 26 你只是虚幻的不存在吗?
 27 Where are you now
 28 你身在何方?
 29 Atlantis
 30 亚特兰蒂斯
 31 Under the sea
 32 在海底
 33 Under the sea
 34 在海底
 35 Where are you now
 36 你身在何方?
 37 Another dream
 38 另外的梦想
 39 The monsters running wild inside of me
 40 狂野的怪兽驰聘在我心深处
 41 Im faded
 42 我憔悴不堪
 43 Im faded
 44 我憔悴不堪
 45 So lost, Im faded
 46 所以迷失,憔悴不堪
 47 Im faded ~~~
 48 我憔悴不堪
 49 So lost, Im faded
 50 所以迷失,憔悴不堪
 51 These shallow waters never met
 52 那些从未见过的水中之影
 53 What i needed
 54 我需要的
 55 Im letting go
 56 只是顺其自然
 57 A deeper dive
 58 深沉海底
 59 Eternal silence of the sea
 60 无尽的沉默于海中
 61 Im breathing
 62 我的呼吸声
 63 Alive.
 64 活着
 65 Where are you now
 66 你身在何方?
 67 Where are you now
 68 你身在何方?
 69 Under the bright but faded lights
 70 明亮的灯光却已经黯然失色
 71 You set my heart on fire
 72 你点燃了我的心火
 73 Where are you now
 74 你身在何方?
 75 Where are you now
 76 你身在何方?
 77 ...
 78 ...
 79 Where are you now
 80 你身在何方?
 81 Atlantis
 82 亚特兰蒂斯
 83 Under the sea
 84 在海底
 85 Under the sea
 86 在海底
 87 Where are you now
 88 你身在何方?
 89 Another dream
 90 另外的梦想
 91 The monsters running wild inside of me
 92 狂野的怪兽驰聘在我心深处
 93 Im faded
 94 我憔悴不堪
 95 Im faded
 96 我憔悴不堪
 97 So lost, Im faded
 98 所以迷失,憔悴不堪
 99 Im faded ~~~
100 我憔悴不堪
101 So lost, Im faded
View Code
2.1.1 f = open(‘c‘)
print(f.readlines())#默认读出所有行,且一行显示出来,每句后面有个\n
2.1.2 f = open(‘c‘)

print(f.read())#默认读出全部行
2.1.3
print(f.readline())#默认读出第一行
2.2 打开文件模式有以下几种
  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

2.3 下面看下文件的一些常见用法

2.3.1 

f = open(‘c‘)
print(f.encoding)#打印出编码格式UTF-8

print(f.readable())#判断文件是否可读 返回 True 
使用flush功能请看:
技术分享
1 import sys
2 import time
3 
4 for i in range(10):
5     sys.stdout.write("#")
6     sys.stdout.flush()
7     time.sleep(1)
8 #每间隔一秒就打印出一个#号
View Code
f.truncate(15)#默认不写数字的话,会将全部的清空

2.3.2
f = open(‘c‘,‘w+‘,encoding="utf-8")
#r+即能读又能写 又名:读写
#w+ 写读 先创建一个文件,再往里写
#a+追加读
f.write("wo 是llll\n")
f.write("wo 是lei\n")
f.write("wo 是Leileilei\n")
f.write("wo 是leileilei\n")
print(f.tell())#打印当前光标所在位置
print(f.seek(10))#光标跳会到某一位置
f.write("could i working python? tell me ? why not?")
f.close()

2.3.3文件修改
技术分享
1 #以下代码实现改动文件中某一字符
2 f = open(c,r,encoding="utf-8")#首先我们从一个文件中读,相当于源文件
3 f_new = open(d,w,encoding="utf-8")#创建一个新的文件,将替换后的文件写到该文件中
4 # Old_Str
5 for line in f:#循环读源文件
6     if "多肆意的快乐" in line:#判断字符"多肆意的快乐"在不再每行中
7         line = line.replace("多肆意的快乐","多痛苦的折磨")#将源文件中字符替换,
8     f_new.write(line)#写到新创建的文件中      执行后会产生一个新的文件,且是已经替换好的字符
View Code

 3. 字符编码详解

需知:

1.在python2默认编码是ASCII, python3里默认是utf-8

2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-8就是unicode

3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

技术分享

 

理解该图后再遇到字符编码就不用慌张了。 

python集合、文件处理、字符编码