一:json模块

json模块的作用就是讲json字符串("{"a":1,"b":1}")和python能够识别的字典进行相互转换。

import json
import pickle
a = """
{'a'::1,
'c':2}
""" ret = json.loads(a)
print(ret) # 结果
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 2 (char 2) a不是标准的json字符串,标准的字符串必须使用双引号进行包裹,这点非常重要。 a = """
{"a":1,
"c":2}
""" ret = json.loads(a)
print(ret) print(ret["a"]) # 结果
{'a': 1, 'c': 2}
1

结论:loads: josn字符串---->和python字典之间的转换

import json
import pickle
a = {'a':1,'b':2} ret = json.dumps(a) # 将pyhton字典转换为josn字符串,这种情况下对于引号的限制没有那么严格
print(ret) print(type(ret)) {"a": 1, "b": 2}
<class 'str'>

二:picke模块:将字节和python对象之间进行转换

import pickle
a = {'a':1,'b':2} b = "哈哈" c = 1 d = [1,2,3] ret1 = pickle.dumps(a) print(ret1) # b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02K\x02u.' ret2 = pickle.dumps(b) print(ret2) # b'\x80\x03X\x06\x00\x00\x00\xe5\x93\x88\xe5\x93\x88q\x00.' ret3 = pickle.dumps(c) print(ret3) # b'\x80\x03K\x01.' ret4 = pickle.dumps(d) print(ret4) # b'\x80\x03]q\x00(K\x01K\x02K\x03e.' with open("demo.txt","wb") as f:
f.write(ret1) 这种情况,就要看ret1的编码格式是什么,python中提供了chardet模块来检查编码格式
import chardet
print(chardet.detect(ret1))
# 结果
{'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}

import pickle
import chardet
a = {'a':1,'b':2}

d = [1,2,3]

f = open("test.txt","wb")

pickle.dump(d,f)  # 不同于dumps返回一个二进制的结果,dump直接将文件写入指定位置

f.close()

import pickle
import chardet
a = {'a':1,'b':2} d = [1,2,3] ret = pickle.dumps(d) print(ret) # b'\x80\x03]q\x00(K\x01K\x02K\x03e.' ret1 = pickle.loads(ret) # pickle必须接收的是picke自己dumps的二进制类型文件 print(ret1) # [1, 2, 3]
import pickle
import chardet
a = "" ret = a.encode("utf-8")
print(ret) ret1 = pickle.loads(ret) # loads的数据,必须是dumps自己处理过的类型才行
print(ret1) # 结果
_pickle.UnpicklingError: could not find MARK
import pickle
import chardet
a = "" ret = a.encode("Windows-1252")
print(ret) ret1 = pickle.loads(ret)
print(ret1)

# 结果
_pickle.UnpicklingError: could not find MARK

 laod方法

import pickle
import chardet with open("demo.txt","rb") as f:
ret = pickle.load(f)
print(ret) # 结果
{'a': 1, 'b': 2}

# 如何将多个字典存入txt文件中,并且将文件的内容转换成excel形式呢?

import json
item1 = {"a":1}
item2 = {"b":1}
item3 = {"c":1}
item4 = {"d":1} ret = {"data":[item1,item2,item3,item4]} # 存的时候
demo = json.dumps(ret)
print(type(demo))
# with open("demo.txt","w") as f:
# f.write(demo) # 取得时候
with open("demo.txt","r") as f:
data = f.read()
data1 = json.loads(data) print(data1) print(data1["data"]) info_list = data1["data"] for i in info_list:
print(type(i))

最新文章

  1. android 对话框 setMultiChoiceItems 设置 初始化勾选
  2. 畅通工程续——E
  3. NUnit笔记
  4. web及移动应用测试知识总结
  5. makefile、gdb使用记录
  6. redis的sets类型
  7. eclipse和android studio导入工程的错误
  8. 十九、Android Activity初探
  9. Linux程序设计学习笔记----多线程编程线程同步机制之相互排斥量(锁)与读写锁
  10. MySql5.7环境搭建
  11. SQLServer树形数据结构的数据进行数据统计
  12. Codeforces Round #534 (Div. 2)D. Game with modulo-1104-D(交互+二分+构造)
  13. [Android] Android 用于异步加载 ContentProvider 中的内容的机制 -- Loader 机制 (LoaderManager + CursorLoader + LoaderManager.LoaderCallbacks)
  14. Oracle RAC环境下ASM磁盘组扩容
  15. 第二十三节:Java语言基础-详细讲解函数与数组
  16. vue 相对路径的图片 不显示问题
  17. vsftp 500 OOPS: cannot change directory:/home/xyp
  18. JMeter性能测试-服务器资源监控插件详解
  19. 【转载】COM 组件设计与应用(七)——编译、注册、调用
  20. 解决区间第K大的问题的各种方法

热门文章

  1. zabbix主动、被动TCP连接过程
  2. VxWorks BSP开发入门
  3. javamail 附件以及正文加图片
  4. git 还原、恢复、回退
  5. 类BigDecimal
  6. bash shell:获取当前脚本的绝对路径(pwd/readlink)
  7. Nginx主要功能及使用
  8. 设置IIS的gzip
  9. python基础-6 正则表达式
  10. Mybatis-学习笔记(2)Mybatis配置文件