文件操作、切片、json操作、集合

================文件操作

# f = open('a.txt','r',encoding='utf-8')
# # res = f.read()


# f = open('users2.txt','w',encoding='utf-8')
# # res = f.read()
# f.write('abc')
# f.read()


# f = open('users3.txt','a',encoding='utf-8')
# # res = f.read()
# f.write('abcdef')
# f.read() #not readable
'''

# r read 只能读不能写,文件不存在时会报错
# w write 文件不存在时,会帮你创建,但不能读 报错 not readable,会清空原来的文件内容
# a append 追加模式,不会清空原来文件的内容,但是不能读,文件不存在的话 会帮你创建

'''
# f = open('a.txt','r+',encoding='utf-8')
# f.write('bbb') # 追加
# res2 = f.read()
# print(res2) #读不出来东西


# f = open('a.txt','w+',encoding='utf-8')
# res = f.read()
# print(res)


# f = open('user4.txt','a+',encoding='utf-8')
# res = f.read()
# print(res)
# f.write('abc')
# res2 = f.read()
# print(res2)


'''

# r+ 读写模式 文件不存在时会报错,可以写,但是写的有问题,写前边去了
# w+ 写读模式 会清空原来的文件内容,可以读,但是读不到东西
# a+ 追加读模式 能写能读,但是读不到东西

'''

#==========文件指针

#
# f = open('users3.txt','a+',encoding='utf-8')
# f.seek(0)
#
# # f.truncate() #删除 指针需要放在最前边 才能清空; 不然就从指针位置开始删除
# # print(f.read()) #全读出来了,字符串
# print(f.readline()) #读取一行的内容
# print(f.tell()) # 当前文件的位置
# # print(f.readlines()) # 全读出来了 ,list
# f.write('\nabc\n')
# f.seek(0)
# print(f.read())

# f.read() 和 f.readlines() 同时存在的话 哪个排在第二个 哪个就是空的 因为有【文件指针】这个东西 一行行读完了,之后再继续读就没有内容了
# 先 realine()一行 ,然后再 read() 的话,read的是 除了第一行之外的东西

# l = ['123\n','abc\n','456\n']
# f.writelines(l) # 把list里的元素 写入到文件里面

==============================切片

# s = 'abc123456'
# print(s[0:3])
# print(s[:3]) # 冒号前边数字不写,说明从第一个开始取
#
# l = ['xiaohei',60,70,80]
# print(l[1:4]) # 切片的时候 是顾头不顾尾的
# print(l[:3]) # 从第一个到第2个
# print(l[3:]) # 从3取到最后
# print(l[:]) #复制一个


# nums = list(range(1,21)) #1到20 也是顾头不顾尾的
# print(nums[0:10]) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# print(nums[0:10:2]) # 第三个参数是步长 [1, 3, 5, 7, 9]
# print(nums[0:10:3]) # [1, 4, 7, 10]
#
# print(nums[::-1]) # 步长为负数时,代表从右往左取 [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
# print(nums[-1:-12:-2]) # [20, 18, 16, 14, 12, 10]
#
# nums.reverse() #可以直接反转
# print(nums)

=============================json操作
import json

# 存在文件里面的东西 读出来都是字符串

# ------json.dumps 把字典转成字符串
'''
打开文件
把字典dumps一下,转成字符串
把字符串写入文件
'''

# d = {'zhang':'123456','wang':'123456'}
# res = json.dumps(d) #把字典转成json串,json串是字符串
# print(type(res))
#
# f = open('user4.txt','w')
# f.write(res)


# ------json.loads 把字符串转成字典

'''
1、打开文件
2、读取文件内容
3、json.laods 把读到的字符串转成字典
'''
# f = open('user4.txt')
# res = f.read()
# print(res)
# d = json.loads(res) # 把json串 转成字典
# print(d)

# d = {'zhang':'123456','wang':'123456','abc':123,'张三':'123456'}
# res = json.dumps(d,indent=4,ensure_ascii=False)
# f = open('user4.txt','w',encoding='utf-8')
# f.write(res)

# ------load
'''
1、打开文件
2、load 自动帮你读
'''
# f = open('user4.txt',encoding='utf-8')
# d = json.load(f) # 把json串 转成字典
# print(d)


# -------dump
'''
打开文件
dump写入
'''

d = {
"error_code": 0,
"stu_info": [
{
"id": 8485,
"name": "haha",
"sex": "未知",
"age": 38,
"addr": "北京",
"grade": "中三",
"phone": "13522222222",
"gold": 100
}
]
}

fw = open('kqs.json', 'w', encoding='utf-8')
json.dump(d, fw, indent=4, ensure_ascii=False)

======================集合

# =======888888集合
# 集合天生可以去重
# 集合是无序的

l = [1,2,3,4,5,4]
res = set(l)
print(res) #{1, 2, 3, 4, 5} 集合也用大括号, key-value的是字典 单个值的是set

s = set() #定义一个空集合
s1 = {1,2,3,4}
s2 = {4,5,6,7}



#交集
jiaoji = s1.intersection(s2)
print(jiaoji)

stu1 = ['zhz','wang','li','zhao'] # 会技能1的
stu2 = ['zhz','wang','li','liu'] # 会技能2的

stuset1 = set(stu1)
stuset2 = set(stu2)

print(stuset1.intersection(stuset2)) # 取交集 {'wang', 'li', 'zhz'}
print(stuset1 & stuset2) # 这样也可以取交集 {'wang', 'li', 'zhz'}


#并集
bingji = stuset1.union(stuset2)
bingji2 = stuset1 | stuset2
print(bingji) #{'zhao', 'wang', 'li', 'zhz', 'liu'}
print(bingji2)


#差集
print(stuset1 - stuset2) # A里面有 B里面没有的 zhao
print(stuset2 - stuset1) # liu

#对称差集
print(stuset1.symmetric_difference(stuset2)) #{'liu', 'zhao'}
print(stuset1^stuset2) #{'zhao', 'liu'}


#加元素
s1.add('abc')
s1.add(9)
s1.remove('abc')
print('abc' in s1)



posted @ 2019-04-18 22:49  baijiaxing  阅读(541)  评论(0编辑  收藏  举报