一、json

json是一个字符串,只不过长得比较像字典。使用json函数需要导入json库,即import json

json的格式只有双引号,不可用单引号

1、json.loads()和json.load()的区别

(1)json.loads() 将json串(字符串)转成字典

import json

user_info = '''{"nhy":"123456","aa":"123456"}'''
print(user_info)
# {"nhy":"123456","aa":"123456"}
user_dic = json.loads(user_info)# 把json串(字符串)转成字典
print(user_dic)
# {'nhy': '123456', 'aa': '123456'}
print('user_dic',type(user_dic))
# user_dic <class 'dict'>
print('user_info',type(user_info))
# user_info <class 'str'>

(2) json.load(f)  这个是直接从文件里拿,不需要再读一次文件了,json直接读

注释:f是指文件

import json

f = open('stu.json')
# stu.json文件内的内容
# {
# "laowang": {
# "cars": [
# "BMW",
# "Ben-z"
# ]
# }
# }
# res1 = json.loads(f.read())
# print(res1) #{'laowang': {'cars': ['BMW', 'Ben-z']}}
res = json.load(f)
print(res)
#{'laowang': {'cars': ['BMW', 'Ben-z']}}

2、json.dumps()和json.dump() 的区别

(1)json.dumps()    把字典转成json

import json

stu_info = {'laowang':{'cars':['BMW','Ben-z']}}
# stu_info是字典
stu_str = json.dumps(stu_info)# 把字典转成json(字符串)
print('json...',type(stu_str))
# json... <class 'str'>
print(stu_str)
# {"laowang": {"cars": ["BMW", "Ben-z"]}}

(2)json.dump()    不需要自己再操作一遍write,会主动写入文件

import json

stu_info = {'laowang':{'cars':['BMW','Ben-z']}}
# fw = open('stu.txt','w',encoding='utf-8')
# fw.write(stu_str) # stu_str是上述介绍json.dumps()中得到的json
# fw.close() fw = open('stu.json','w',encoding='utf-8')
json.dump(stu_info,fw,indent=4)# 不需要自己再write,会主动写入文件,indent指的是写入文件后,缩进几个空格

二、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() # username = input('username:')
# pwd = input('paswd')
#all_user = ['nhy','abc']
#passwd = ['123456','12345']
#
# if username in all_user and pwd in passwd:
# print('登录成功')
 

最新文章

  1. 【WPF】最近在学习wpf 的绑定,,
  2. Django Channels 学习笔记
  3. zsh下 home end 键失效的解决办法
  4. 关于cmd下使用taskkill无法终止进程名包含空格的进程的解决方案
  5. reactjs 注意点
  6. 监控Mysql主从环境下Slave延迟状态的操作记录
  7. c# 6.0新特性(二)
  8. CodeBlocks的汉化、主题美化及其调试功能的实现
  9. [Linux]gdb调试
  10. 部分手机不能连PC adb
  11. 第一个Apple Watch小例子
  12. winPcap_2_编译环境*注意*
  13. tornado\ioloop.py单例
  14. activiti工作流框架简介
  15. spring MVC 管理HttpClient---实现在java中直接向Controller发送请求
  16. vi命令设置行号
  17. http中post和get方法区别
  18. Go语言的map如何判断key是否存在
  19. Linux设备树(一 概述)
  20. C# 流水号生成器开发

热门文章

  1. 谈谈contentWindow 和contentDocument以及 iframe
  2. VS编译常见错误枚举01
  3. 一些c++
  4. PLSQL链接oracle报错--ORA-12154: TNS: 无法解析指定的连接标识符
  5. ubuntu apt-get用法
  6. Navigator - BOM对象
  7. Log4Net 在ASP.NET WebForm 和 MVC的全局配置
  8. 关于使用sessionStorage报SecurityError错误的问题
  9. ubuntu16.04 安装openpose
  10. Tensorflow学习(练习)—使用inception做图像识别