一: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模块的更多相关文章

  1. python学习_应用pickle模块封装和拆封数据对象

    学习文件数据处理的时候了解到有pickle模块,查找官方文档学习了一些需要用到的pickle内容. 封装是一个将Python数据对象转化为字节流的过程,拆封是封装的逆操作,将字节文件或字节对象中的字节 ...

  2. .net 爬虫技术

    关于爬虫 从搜索引擎开始,爬虫应该就出现了,爬的对象当然也就是网页URL,在很长一段时间内,爬虫所做的事情就是分析URL.下载WebServer返回的HTML.分析HTML内容.构建HTTP请求的模拟 ...

  3. 使用webcollector爬虫技术获取网易云音乐全部歌曲

    最近在知乎上看到一个话题,说使用爬虫技术获取网易云音乐上的歌曲,甚至还包括付费的歌曲,哥瞬间心动了,这年头,好听的流行音乐或者经典老歌都开始收费了,只能听不能下载,着实很郁闷,现在机会来了,于是开始研 ...

  4. 使用htmlparse爬虫技术爬取电影网页的全部下载链接

    昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...

  5. Pythoy 数据类型序列化——json&pickle 模块

    Pythoy 数据类型序列化--json&pickle 模块 TOC 什么是序列化/反序列化 pickle 模块 json 模块 对比json和pickle json.tool 命令行接口 什 ...

  6. 洗礼灵魂,修炼python(70)--爬虫篇—补充知识:json模块

    在前面的某一篇中,说完了pickle,但我相信好多朋友都不懂到底有什么用,那么到了爬虫篇,它就大有用处了,而和pickle很相似的就是JSON模块 JSON 1.简介 1)JSON(JavaScrip ...

  7. python 常用模块(一): os模块,序列化模块(json模块 pickle模块 )

    1.os模块 2.序列化模块:(1)json模块 和 pickle模块 一.os模块 os.path.abspath: (1)把路径中不符合规范的/改成操作系统默认的格式 import os path ...

  8. python(31)——【sys模块】【json模块 & pickle模块】

    一.sys模块 import sys sys.argv #命令行参数List,第一个元素是程序本身路径 sys.exit() #退出程序,正常退出时exit(0) sys.version #获取pyt ...

  9. [转]python pickle模块

    持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让 ...

随机推荐

  1. Oracle Flashback Transaction Query with Oracle Flashback Version Query

    Oracle Flashback Transaction Query with Oracle Flashback Version Query In this example, a database a ...

  2. 模拟赛DAY 2 T2不老梦

    [题目背景] 于万人中万幸得以相逢,刹那间澈净明通. 成为我所向披靡的勇气和惶恐,裂山海,堕苍穹. 爱若执炬迎风,炽烈而哀恸,诸般滋味皆在其中. 韶华宛转吟诵,苍凉的光荣,急景凋年深情难共. ——银临 ...

  3. c# 用DotNetZip来解压/压缩文件

    //https://archive.codeplex.com/?p=dotnetzip //最新在Nuget 下载DotNetZip using Ionic.Zip; private void but ...

  4. 在阿里云centOS7上部署Redis 5.0.5主从 + 哨兵模式

    一.在两台服务器上分别安装.配置Redis 5.0.5 ,为一主一从 安装Redis关键命令: 将安装包上传至:/home 目录下解 压:.tar.gz 安装依赖:yum install gcc 安装 ...

  5. JS - 创建只读属性

    一:为私有变量创建get()方法 这种方式可以创建 "伪 "只读属性.这并不是一种好方法,因为使用_函数_获得只读的_属性_不太符合一般的逻辑. /** * Represent a ...

  6. mysql多对多查询 原生写法

    准备工作,1.创建表 CREATE TABLE IF NOT EXISTS `users` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR ...

  7. Mac016--安装kubernetes(k8s)

    一.安装kubernetes(k8s) 参考: http://batizhao.github.io/2018/01/18/Running-Kubernetes-Locally-via-Minikube ...

  8. 史上最全的ORACLE基础教程

    ORACLE命令和语句挺多,全部记忆下来不现实,况且有不常用的指令.下面把大部分的指令做了记录和详细的注释.建议收藏.转发此篇文章,如果忘记可以翻出来查查.关注公众号it_learn获取更多学习资源 ...

  9. javascript数组排序和prototype详解

    原型的概念::原型对象里的所有属性和方法 被所有构造函数实例化出来的对象所共享,类似于java中的 static 正因为共享所以单一的操作 就会影响了全局,因此使用时需注意 基于prototype:为 ...

  10. 洛谷 - P4567 - 文本编辑器 - 无旋Treap

    https://www.luogu.org/problem/P4567 事实证明无旋Treap是不是不可能会比Splay快? #include<bits/stdc++.h> using n ...