爬虫技术:数据处理josn和pickle模块
一: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))
爬虫技术:数据处理josn和pickle模块的更多相关文章
- python学习_应用pickle模块封装和拆封数据对象
		
学习文件数据处理的时候了解到有pickle模块,查找官方文档学习了一些需要用到的pickle内容. 封装是一个将Python数据对象转化为字节流的过程,拆封是封装的逆操作,将字节文件或字节对象中的字节 ...
 - .net 爬虫技术
		
关于爬虫 从搜索引擎开始,爬虫应该就出现了,爬的对象当然也就是网页URL,在很长一段时间内,爬虫所做的事情就是分析URL.下载WebServer返回的HTML.分析HTML内容.构建HTTP请求的模拟 ...
 - 使用webcollector爬虫技术获取网易云音乐全部歌曲
		
最近在知乎上看到一个话题,说使用爬虫技术获取网易云音乐上的歌曲,甚至还包括付费的歌曲,哥瞬间心动了,这年头,好听的流行音乐或者经典老歌都开始收费了,只能听不能下载,着实很郁闷,现在机会来了,于是开始研 ...
 - 使用htmlparse爬虫技术爬取电影网页的全部下载链接
		
昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...
 - Pythoy 数据类型序列化——json&pickle 模块
		
Pythoy 数据类型序列化--json&pickle 模块 TOC 什么是序列化/反序列化 pickle 模块 json 模块 对比json和pickle json.tool 命令行接口 什 ...
 - 洗礼灵魂,修炼python(70)--爬虫篇—补充知识:json模块
		
在前面的某一篇中,说完了pickle,但我相信好多朋友都不懂到底有什么用,那么到了爬虫篇,它就大有用处了,而和pickle很相似的就是JSON模块 JSON 1.简介 1)JSON(JavaScrip ...
 - python 常用模块(一): os模块,序列化模块(json模块   pickle模块 )
		
1.os模块 2.序列化模块:(1)json模块 和 pickle模块 一.os模块 os.path.abspath: (1)把路径中不符合规范的/改成操作系统默认的格式 import os path ...
 - python(31)——【sys模块】【json模块 & pickle模块】
		
一.sys模块 import sys sys.argv #命令行参数List,第一个元素是程序本身路径 sys.exit() #退出程序,正常退出时exit(0) sys.version #获取pyt ...
 - [转]python pickle模块
		
持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让 ...
 
随机推荐
- fedora23安装firefox中的flash插件-最终解决问题是: 要给libflashplayer.so以777权限, 开始给的755权限没有实现!
			
下载的flash插件是一个rpm包. ===================================== rpm查看文件属于哪个包? 要看这个rpm包安装过还是没有安装过? (如果不用-p就是 ...
 - 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_9_Hashtable集合
			
是最早期的双列集合 同步就表示是单线程 value也不允许为空
 - POI读取指定Excel中行与列的数据
			
import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import ...
 - 【MM系列】SAP 主要模块及简介
			
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 主要模块及简介 前言部分 ...
 - 排序算法七:基数排序(Radix sort)
			
上一篇提到了计数排序,它在输入序列元素的取值范围较小时,表现不俗.但是,现实生活中不总是满足这个条件,比如最大整形数据可以达到231-1,这样就存在2个问题: 1)因为m的值很大,不再满足m=O(n) ...
 - [Git] 010 对 [Git 008] 的补充:实现 commit 不计次数
			
回顾:[Git] 008 status 与 commit 命令的补充 的 "2.4" [Git 008] 的 "2.4" 使用 git commit --ame ...
 - (4.31)quotename函数
			
操作sql server尤其是写存储过程时,要用到各种各样的函数,今天就总结一个quotename()的用法. 1.语法: quotename(‘character_string’[,‘quote_c ...
 - 面试一个 3 年 Java 程序员,一个问题都不会!
			
大家周末愉快,当你看到这篇文章的时候,事情已经过去几天了. 刚从洽谈室走出来,心情很复杂! 栈长面试过很多人,不乏知识渊博.技能顶尖的选手,但从未遇到过工作了三年,却一个问题都答不上来.. 这场史无前 ...
 - jsp对象 指令 动作
			
转载来源:https://blog.csdn.net/u010897406/article/details/49618413 jsp九大内置对象:1>out 向客户端输出数据,字节流.如out. ...
 - C/C++表达式求值问题
			
转载:https://originlee.com/2016/05/01/eval-expression-in-c-and-cpp/ 前几日,一个刚学编程的老朋友问了我一个问题: int i = 0;i ...
 
			
		
这种情况,就要看ret1的编码格式是什么,python中提供了chardet模块来检查编码格式