聊聊python中的load、loads实现反序列化的问题

load与loads

简介:

在python自动化中,我们传递一些参数是需要从文件中读取过来的,读取过来的字典并非python对象数据类型而是string类型。

这样在我们传递参数的时候就会出现格式不正确的情况,这时候就要用到load实现反序列化

python对象数据类型包括list ,dict,tuple,set等

案例1:load

load:load主要处理的是文件流

首先我们新建一个txt文件,文件中写入一个字典

{"a":"1","b":"2"}

这时候我们用py文件把他读取出来

f = open(r'C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\load.txt','r',encoding='utf-8') #通过open打开刚刚新建的txt文档
a = f.read()   #读取f文件下所有的内容
print(a)  #打印下读取的内容
print(type(a)) #打印下读取内容的格式

返回结果

D:\software\python.exe C:/Users/张天赐/PycharmProjects/pythonProject/test/lianxi/111.py
{"a":"1","b":"2"}
<class 'str'>

可以看到我们读取出来的内容看似字典,但是实际type类型是str类型的,如果在做接口测试的时候,接口需要传输

json格式的数据,这时候就会出现报错的情况。

解决方案:使用load方式,将文件中的数据转换成python对象中的dict字典格式

import json
f = open(r'C:\Users\张天赐\PycharmProjects\pythonProject\test\lianxi\load.txt','r',encoding='utf-8') #通过open打开刚刚新建的txt文档
a = json.load(f)  #读取f文件下所有的内容
print(a)  #打印下读取的内容
print(type(a)) #打印下读取内容的格式

返回结果

D:\software\python.exe C:/Users/张天赐/PycharmProjects/pythonProject/test/lianxi/111.py
{'a': '1', 'b': '2'}
<class 'dict'>

案例2:loads

loads:loads主要处理的是字符流

正常打印一个字符形式的字典,返回结果为str类型

test = "{'a':'1','b':'2'}"
print(test)
print(type(test))

返回结果

{'a':'1','b':'2'}
<class 'str'>

使用loads将sting类型转换为python可读对象

import json
test = '{"a":"1","b":"2"}'
test1 = json.loads(test)
print(test1)
print(type(test1))

返回结果

{'a': '1', 'b': '2'}
<class 'dict'>

到此这篇关于python中的load、loads实现反序列化的文章就介绍到这了,更多相关python中的load、loads实现反序列化内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python json.loads兼容单引号数据的方法

    Python的json模块解析单引号数据会报错,示例如下 >>> import json >>> data = "{'field1': 0, 'field2': 'hehehehe', 'field3': 'hahaha'}" >>> json.loads(data) Traceback (most recent call last): File "", line 1, in File "/usr/li

  • 老生常谈Python序列化和反序列化

    通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长.并且需要时可以再次将这个对象读取出来.Python中有几个常用模块可实现这一功能. pickle模块 存储在变量中 dumps(obj)返回存入的字节 dic = {'age': 23, 'job': 'student'} byte_data = pickle.dumps(dic) # out -> b'\x80\x03}q\x00(X\x03\x00\x00\...' print(byte_data)

  • 解决Python下json.loads()中文字符出错的问题

    Python:2.7 IDE:Pycharm5.0.3 今天遇到一个问题,就是在使用json.load()时,中文字符被转化为Unicode码的问题,解决方案找了半天,无解.全部代码贴出,很简单的一个入门程序,抓的是有道翻译的,跟着小甲鱼的视频做的,但是他的版本是python3.4,所以有些地方还需要自己改,不多说,程序如下: import urllib#python2.7才需要两个urllib url="http://fanyi.youdao.com/translate?smartresult

  • python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)

    python3 json数据格式的转换(dumps/loads的使用.dict to str/str to dict.json字符串/字典的相互转换) Python3 JSON 数据解析 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: json.dumps(): 对数据进行编码. json.loads(): 对数据进

  • Python Json模块中dumps、loads、dump、load函数介绍

    Json模块dumps.loads.dump.load函数介绍 1.json.dumps() json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数. import json name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'} jsObj = json.dumps(name_emb) print(name_emb) print(jsOb

  • 聊聊python中的load、loads实现反序列化的问题

    load与loads 简介: 在python自动化中,我们传递一些参数是需要从文件中读取过来的,读取过来的字典并非python对象数据类型而是string类型. 这样在我们传递参数的时候就会出现格式不正确的情况,这时候就要用到load实现反序列化 python对象数据类型包括list ,dict,tuple,set等 案例1:load load:load主要处理的是文件流 首先我们新建一个txt文件,文件中写入一个字典 {"a":"1","b":

  • python中的load、loads实现反序列化示列

    目录 1.简介 2.案例1:load 3.案例2:loads 1.简介 在python自动化中,我们传递一些参数是需要从文件中读取过来的,读取过来的字典并非python对象数据类型而是string类型. 这样在我们传递参数的时候就会出现格式不正确的情况,这时候就要用到load实现反序列化 python对象数据类型包括list ,dict,tuple,set等 2.案例1:load load:load主要处理的是文件流 首先我们新建一个txt文件,文件中写入一个字典 {"a":"

  • Python中json.load()和json.loads()有哪些区别

    一.图解 json.loads():解析一个有效的JSON字符串并将其转换为Python字典 json.load():从一个文件读取JSON类型的数据,然后转转换成Python字典 二.json.loads()用法 1.例子 import json data = { "name": "Satyam kumar", "place": "patna", "skills": [ "Raspberry p

  • 聊聊Python中的pypy

    PyPy是一个虚拟机项目,主要分为两部分:一个Python的实现和 一个编译器 PyPy的第一部分: 用Python实现的Python 其实这么说并不准确,准确得说应该是用rPython实现的Python,rPython是Python的一个子集,虽然rPython不是完整的Python,但用rPython写的这个Python实现却是可以解释完整的Python语言. PyPy的第二部分:编译器 这是一个编译rPython的编译器,或者说这个编译器有一个rPython的前端,目前也只有这么一个前端,

  • 聊聊python中的异常嵌套

    在Python中,异常也可以嵌套,当内层代码出现异常时,指定异常类型与实际类型不符时,则向外传,如果与外面的指定类型符合,则异常被处理,直至最外层,运用默认处理方法进行处理,即停止程序,并抛出异常信息.如下代码: try: try: raise IndexError except TypeError: print('get handled') except SyntaxError: print('ok') 运行程序: Traceback (most recent call last): File

  • 聊聊python中的循环遍历

    python之循环遍历 关于循环遍历大家都知道,不外乎for和while,今天我在这写点不一样的循环和遍历.在实践中有时会遇到删除列表中的元素,那么循环遍历列表删除指定元素该怎么做呢? 还是直接上代码看案例吧: import time # 删除下面列表中所有张姓元素,输出的结果应该是['李老大','李老二'] lst = ['张老大', '张老二', '李老大', '张老三', '李老二']*10000 # 直接for循环遍历列表,remove需要删除的元素 def del1(lst): for

  • 简单聊聊Python中的鸭子类型和猴子补丁

    目录 前言 鸭子类型 猴子补丁 总结 前言 Python 开发者可能都听说过鸭子类型和猴子补丁这两个词,即使没听过,也大概率写过相关的代码,只不过并不了解其背后的技术要点是这两个词而已. 我最近在面试候选人的时候,也会问这两个概念,很多人答的也并不是很好.但是当我向他们解释完之后,普遍都会恍然大悟:“哦,是这个啊,我用过”. 所以,我决定来写一篇文章,探讨一下这两个技术. 鸭子类型 引用维基百科中的一段解释: 鸭子类型(duck typing)在程序设计中是动态类型的一种风格.在这种风格中,一个

  • 聊聊Python中的浮点数运算不准确问题

    大家好,老 Amy 来了.之前就意识到一个问题,但是最近又有朋友提出来了,所以就想着干脆记录下来,分享给大家叭~ 啥问题呢?请看题: 也就是说,需要大家计算1.1-1的值,很多朋友会说:"emmm-这还不简单,玩我呢?不就是0.1嘛" 但是如果你用 python 去执行一下,会发现结果跟你想的不太一样,如下图: 这样大家是不是发现了什么问题?是的,浮点数在运算过程中并没有保证完全精确,是什么原因导致了这种现象呢?很多朋友就会窃喜:"这不就是 Python 的 bug 嘛~&q

  • 聊聊python中not 与 is None的区别

    原因: list 获得的数据为空: 显示值为 [ ] 不同的判断--- is None ----not 两者结果不一样分析: 总之: not 判断的是内容,而is None则涉及到这个 list 或 dict 是否声明并定义 补充:关于Python not 及is None的有趣现象(两者的区别) 笔者小白最近在刷题的过程中,遇到一个有趣的现象. 在使用 if A is None 来实现判断条件的时候,最后程序没有通过.这里的A代表之前定义的list类型的数据.最用改成if not A才通过.

  • 聊聊Python中end=和sep=的区别

    end: 默认是换行,表示两个字符串最后以什么结尾. eg: 换行 end="\n" sep: 默认是空格,表示两个字符串之间用什么分割. eg: 空格 sep=" " 补充:python 中的 print(x, end=) 和 print(x, sep=) print(x, end=) for i in range(10): print(i) 输出结果: 0 1 2 3 4 5 6 7 8 9 for i in range(10): print(i, end=&q

随机推荐