Python自动化四--json模块使用,集合操作,函数

内容:
  1. json模块
  2. 集合操作
  3. 函数
一,json模块

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:

  • json.dump(): 对数据进行编码。
  • json.load(): 对数据进行解码。

json格式存储--小例子

import json
stu_info  = { 'laowang':{ 'cars':['BMW','Ben-z'] }  }
stu_str = json.dumps(stu_info) #把字典转成json(字符串)
print('json....',type(stu_str))
fw = open('stu.txt','w',encoding='utf-8')
fw.write(stu_str)
fw.close()
fw = open('stu.json','w',encoding='utf-8')
json.dump(stu_info,fw,indent=4)  #自动写入字典,存为json格式,单引号自动变为双引号

#存在文件中的json格式为:
{ "laowang":{ "cars":["BMW","Ben-z"] }  }

JSON编码的字符串转换回一个Python数据结构

import json

# Python 字典类型转换为 JSON 对象
data1 = {
    'no' : 1,
    'name' : 'Runoob',
    'url' : 'http://www.runoob.com'
}

json_str = json.dumps(data1)
print ("Python 原始数据:", repr(data1))
print ("JSON 对象:", json_str)

# 将 JSON 对象转换为 Python 字典
data2 = json.loads(json_str)
print ("data2['name']: ", data2['name'])
print ("data2['url']: ", data2['url'])

处理json格式文件

# 读取数据,以UTF-8格式读取文件为中文格式
with open('data.json', 'r',encoding='utf-8) as f:
    data = json.load(f)

# 写入JSON 数据
with open('data.json', 'w',encoding='utf-8) as f:
    json.dump(data, f,ensure_ascii=False)#避免存入文件中的中文被转为ascii码

json存储用户密码注册文件--小例子

import json
f = open('users.txt','a+',encoding='utf-8')  #文件句柄,文件对象
f.seek(0)
all_users = json.load(f)
for i in range(3):
	u = input('user:').strip()
	p = input('p:').strip()
	cp = input('cp:').strip()
	if not u or not p:
		print('账号、密码不能为空')
	elif u in all_users:
		print('该用户已经被注册!')
	elif u not in all_users and cp==p:
		all_users[u]=p
		break
		
f.seek(0)
f.truncate()
json.dump(all_users,f,indent=4)
f.close()
二,集合操作

集合(set)是一个无序不重复元素的序列。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:

parame = {value01,value02,...}
#或者
set(value)

进行集合运算:

list = [1,2,3,4,5,3,6}
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)) #父集
print(list.symmetric_difference(list_2)) # 对称差集 lsit 和 list_3 互相没有的

a=set(a)
b=set(b)

print(a - b)     # a和b的差集
print(a | b)     # a和b的并集
print(a & b)     # a和b的交集
print(a ^ b)     # a和b中不同时存在的元素

集合操作:

list=set(list)

list.add(777) #一次添加一个
list.update([888,999])#同时添加多个
list.remove(999)#删除指定元素
list.pop()#随机删除一个
list.discard(888) # 删除指定元素,若不存在,报错

密码强弱校验--小例子

import string
all_nums = set(string.digits)#数字
lower = set(string.ascii_lowercase)#所有小写字母
upper = set(string.ascii_uppercase)#所有大写字母
punctuation = set(string.punctuation)#所有特殊符号
for i in range(5):
	pwd = input('请输入你的密码:').strip()
	pwd = set(pwd)
	#判断密码是否包含大小写字母和特殊符号
	if pwd & all_nums and pwd & lower and pwd & upper and pwd & punctuation:
		print('密码合法')
	else:
		print('密码不合法!')
三,函数

函数定义规则:

  1. 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
  2. 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  3. 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  4. 函数内容以冒号起始,并且缩进。
  5. return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

函数定义实例

def say(name,sex='男'):    #函数,形参,形式参数,变量
	#必填参数 位置
	#默认值参数 非必填
	print('%s 哈哈哈  性别%s'%(name,sex)  )  
	#函数体

局部变量与全局变量:在函数里面的变量全都是局部变量,它只能在函数里面使用,函数执行结束那么没有这个变量

return:如果需要用到函数的处理结果的话,那么就写return,不需要的话,那就不用写,函数里面如果碰到return,函数立即结束

校验输入字符串为小数的程序--小例子

  1. 只有一个小数点 判断小数点个数
  2. 正小数的情况下,小数点左边和右边都是整数的话,才合法 [0 ,12]
  3. 负小数的情况下 小数点右边整数,左边 必须以负号开头,只有一个负号。
def check_float(s):
	s = str(s)
	if s.count('.')==1:
		s_list = s.split('.')
		left = s_list[0] #小数点左边  # '-98'
		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
posted @ 2018-06-14 21:48  土豆稀饭  阅读(208)  评论(0编辑  收藏  举报