处理Json


 

import json

user_info = '''
{"xiaohei":"123456","xiaobai":"456789"}
'''
# json 里一定要是双引号 不能是单引号
user_dic = json.loads(user_info)  # 把json串(字符串)转成字典

# load操作字符串,load操作文件
f = open('stu.json')
res = json.loads(f.read())  # load会自动读
print(res)

# stu_info = {'laowang':{'cars':['BMW','Ben-z']}}
# stu_str = json.dumps(stu_info) # 字典转换成json串(字符串)
# print(stu_str)

# fw = open('stu.json','w',encoding='utf-8')
# json.dump(stu_info,fw,indent=4) # dump 会自动写,不需要自己再write

 

文件操作


 

首先说一个方法:

#1、简单粗暴直接
    #1、先获取到文件里面所有的内容
    #2、然后修改内容
    #3、清空原来文件里面的内容
    #4、重新写入
# f = open('users.txt','a+')
# f.seek(0)
# all_data = f.read()
# new_data = all_data.replace('123','python')
# f.seek(0)
# f.truncate() # 清空文件内容
# f.write(new_data)
# f.flush()
# f.close()
当然是不提倡这种方法的拉~~~下面介绍另一个方法
#2、高效的处理方式
    #   words          words_new
    #1、先打开原来的文件,再打开一个空文件
    #2、循环处理原文件里面的每一行数据,处理完之后,写到新的文件里面
    #3、把原来的文件删掉,把新文件的名字改成原来的文件名

举个例子:

#1、去掉前面的空格
#2、把空行去掉
#3、你替换you
#4、写到新文件里
#5、把原来的文件删掉,把新文件的名字改成原来的文件名
# import os
# with open('words',encoding='utf-8') as fr,open('words_new','w',encoding='utf-8')as fw:  # 打开原有文件word,(with)同时打开一个新文件word_new
#     for line in fr:  # 根据行进行循环读取
#         line = line.lstrip()    # 去掉左边的空格
#         if line: # 判断这一行是否有数据
#             line = line.replace('你','you')  # 替换数据
#             fw.write(line)  # 写到新文件里面
#
# os.remove('words') # 删除原来的文件
# os.rename('words_new','words') # 把原来的文件删掉,把新文件的名字改成原来的文件名

 

集合


 

# 1、天生去重、循环
# 2、关系测试 —— 交集、差集、并集、反向差集、堆成差集
 
#nums = {6,7,1,2,3,4,5}  # 集合也是无序的
 
list = [1,2,3,4,5,3,6]
# list_dict = {2,3,4,3}
# print(set(list))

list_2 = [2,3,5,7,8]
list = set(list)
list_2 = set(list_2)
print(list.intersection(list_2))   # 交集     取出重复数据
print(list.union(list_2))   # 并集    去重——同意展示
print(list.difference(list_2))  # 差集    取出list中有的,list_2没有的

list_3 = set([1,3,6])
print(list_3.issubset(list))    # 子集    list_3的值在list中全有
print(list.issuperset(list_3))  # 父集    list包含所有list_3的值
print(list.symmetric_difference(list_2))    # 对称差集 list在list_2中没有的,list_2在list中没有的 —— 并集减去交集

print('-------------------')
print(list & list_2) # 交集
print(list | list_2) # 并集
print(list - list_2) # 差集
print(list ^ list_2) # 对称差集

print('--------集合操作--------')
list.add(777) # 一次添加一个
print(list)
list.update([888,999]) # 同时添加多个
print(list)
list.remove(999) # 删除999  删除一个不存在的会报错
print(list)
list.pop() # 随机删除
print(list)
list.discard(888)  # 删除888  删除一个不存在的不会报错
print(list)

 

函数


函数 就是一个功能,一个方法,简化代码

# def say(name,sex='女'):  # 函数(参数——形参,形式参数,变量)
def calc(x,y):
    res = x*y
    return res  # 返回一个值
    # print(res) # 上面有return,所以这句话永远都不会执行到
# 在函数里面的变量全都是局部变量,它只能在函数里面使用,函数执行结束那么就没有这个变量了
# 函数必须得调用才会执行
# 函数里面如果碰到return,函数立即结束

 

举个例子!

# 1、写一个校验输入的字符串是否为小数的程序
    # 1  0.12   -12.3
        # 1、只有一个小数点 判断小数点个数
        # 2、正小数的情况下,小数点左右两边都为整数的话,才合法     0.12分割成[0,12]
        # 3、负小数的情况下,小数点右边整数,左边必须负号开头,并且只有一个负号


def check_float(s):
    s = str(s)
    if s.count('.')==1:
        s_list = s.split('.')
        # 5.3  [5,3]
        # -98.37    [-98,37]
        left = s_list[0]    # 小数点左边
        right = s_list[1]   # 小数点右边
        if left.isdigit() and right.isdigit():  # 这里是判断正小数
            return True
        if left.startswith('-') and left[1:].isdigit() and right.isdigit():
            return True
    return False
# print(check_float(1.8)) #True
# print(check_float(-2.4))    #True
# print(check_float('-s.5'))  #False
# print(check_float('5.a2'))  #False
# print(check_float('-a.65d'))    #False
# print(check_float(-5-1.5--0.3-2.1)) #True