辨别 Python 中 load 和 loads 的小技巧

 

 

load 和 loads 都是实现“反序列化”,load 通过 json.load(open('*.json')) 这样的格式,从文件句柄中打开文件,加载到Python的变量中,并以字典的格式转换。而 loads 必须对于 Python内存中的序列化对象转换成字符串。

load 和 loads 都是实现 “反序列化”,区别在于(以Python为例):

  • loads 针对 内存对象,即将 Python内置数据序列化为字串。如使用json.dumps序列化的对象d_json=json.dumps({'a':1, 'b':2}),在这里 d_json 是一个字串'{"b": 2, "a": 1}',d=json.loads(d_json)  #{ b": 2, "a": 1},使用load重新反序列化为dict

  • load 针对 文件句柄。如本地有一个 json 文件 a.json 则可以 d=json.load(open('a.json')),相应的,dump 就是将内置类型序列化为 json 对象后写入文件

 

测试 ( 使用 loads )


list_1 = '[1,2,3,4]'
dict_1 = '{"k1":"v1"}'
print(type(list_1)) # <class 'str'>
print(type(dict_1)) # <class 'str'>ret = json.loads(list_1)
print(ret, type(ret))ret = json.loads(dict_1)
print(ret, type(ret))# 输出
# [1, 2, 3, 4] <class 'list'>
# {'k1': 'v1'} <class 'dict'>

 

测试( 使用 load ):

# -*- coding: utf-8 -*-
# @Time    :
# @Author  :
# @Email   :
# @File    : parse_cinema_info.py
# @Software: PyCharmimport jsondef parse_cinema_info():cinema_info_dict = json.load(open('f:/bj_cinema_all_info.json', "rb"))all_cinemas = cinema_info_dict['cinemas']cinemas_list = list()for cinema in all_cinemas:d = dict(cinema_id=cinema['id'],cinema_name=cinema['nm'],city='北京',address=cinema['addr'],telephone=None)cinemas_list.append(d)with open('f:/bj_cinema.json', 'w') as f:json.dump(cinemas_list,f, ensure_ascii=False, indent=4)passif __name__ == '__main__':parse_cinema_info()pass

使用 dump:

# -*- coding: utf-8 -*-
# @Time    : 
# @Author  : 
# @Email   : 
# @File    : parse_cinema_hall_info.py
# @Software: PyCharmimport re
import jsondef parse_file():cinema_hall_info = dict()with open('f:/pipelines.log', 'rb') as f:all_lines = f.readlines()for line in all_lines:line_str = line.decode('utf-8')base_time_info = re.findall("\('.*?'\)", line_str)if base_time_info:hall_info_list = list()for base_time in base_time_info:t = tuple(eval(base_time))cinema_id, hall_info = t[1], t[8]if hall_info not in hall_info_list:hall_info_list.append(hall_info)cinema_hall_info[cinema_id] = hall_info_listelse:# print(json.dumps(cinema_hall_info, ensure_ascii=False))hall_info_list = list()for cinema in cinema_hall_info:# print('cinema_id : {0}    hall_info : {1}'.format(cinema, cinema_hall_info[cinema]))d = dict(cinema_id=cinema,hall_info=cinema_hall_info[cinema],seat_count=None)hall_info_list.append(d)else:with open('f:/bj_cinema_hall.json', 'w') as f:json.dump(hall_info_list, f, ensure_ascii=False, indent=4)if __name__ == '__main__':parse_file()pass

一个测试 json 文件 (bj_cinema_all_info.json):

{"cinemas": [{"id": 264,"mark": 0,"nm": "万达国际影城(CBD店)","sellPrice": "48.5","addr": "朝阳区建国路93号万达广场B座3层","distance": "600m","tag": {"allowRefund": 0,"buyout": 0,"cityCardTag": 0,"deal": 0,"endorse": 0,"hallType": ["IMAX厅","RealD 6FL厅","4DX厅"],"hallTypeVOList": [{"name": "IMAX厅","url": ""},{"name": "RealD 6FL厅","url": ""},{"name": "4DX厅","url": ""}],"sell": 1,"snack": 1,"vipTag": "折扣卡"},"promotion": {}},{"id": 23,"mark": 0,"nm": "百丽宫影城(国贸店)","sellPrice": "29","addr": "朝阳区建国门外大街1号国贸商城北区B1层B120","distance": "1km","tag": {"allowRefund": 0,"buyout": 0,"cityCardTag": 0,"deal": 0,"endorse": 0,"hallType": ["RealD厅"],"hallTypeVOList": [{"name": "RealD厅","url": ""}],"sell": 1,"snack": 1},"promotion": {}}],"ct_pois": [{"ct_poi": "936879945111165696_a15272_c223","poiid": 99082156},{"ct_poi": "936879945111165696_a2378_c224","poiid": 1541434},{"ct_poi": "936879945111165696_a15748_c225","poiid": 94728699}],"paging": {"hasMore": false,"limit": 10000,"offset": 0,"total": 226}
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 自带工具类~断言

SpringBoot 中提供了 Assert 断言工具类&#xff0c;通常用于数据合法性检查 org.springframework.util.Assert // 要求参数 object 必须为非空&#xff08;Not Null&#xff09;&#xff0c;否则抛出异常&#xff0c;不予放行 // 参数 message 参数用于定制异常信息。 v…

电竞专业与计算机专业,2021电竞专业的大学排名 电竞专业主要上什么课程

2017年教育部下文增设电竞专业&#xff0c;电子竞技人才培养体系正式形成。为了让广大电竞爱好者&#xff0c;从业者&#xff0c;考生及家长全面客观地了解电竞教育现状&#xff0c;电竞专业高校排行榜应运而生&#xff01;2021年电竞专业大学排行榜1、中国传媒大学南广学院中国…

是精通CSS吗?

经常看到些招聘都要求精通“CSS手写代码”、“通过W3C验证”、“兼容IE5678,FF,opera,safari…”&#xff0c;姑且对其自身认识的准确度不谈&#xff0c;所罗列的这一大堆东西真的觉得是有意义的吗&#xff1f; 难道CSS的最高境界就是熟知各浏览器的对HTML/XHTML&#xff0c;CS…

计算机主机部件与外设的工作原理,计算机组成原理名词解释和简答

第一章名词解释&#xff1a;1.中央处理器&#xff1a;主要由运算器和控制器组成。控制部件&#xff0c;运算部件&#xff0c;存储部件相互协调&#xff0c;共同完成对指令的执行。2.ALU&#xff1a;对数据进行算术和逻辑运算处理的部件。3.数据通路&#xff1a;由操作元件和存储…

Linux 源码安装 Python3 和 pip3

From&#xff1a;https://www.cnblogs.com/Mrhuangrui/p/7722531.html Python 包管理工具 pip 安装 和 使用&#xff1a; https://blog.csdn.net/freeking101/article/details/53445982 安装 Python3 下载源码包https://www.python.org/downloads/解压(以3.64版本为例) wget h…

周志华:满足这三大条件,可以考虑不用深度神经网络

来源&#xff1a; AI科技大本营摘要&#xff1a;4 月 15 日举办的京东人工智能创新峰会上&#xff0c;刚刚上任京东人工智能南京分院学术总顾问的周志华教授做了《关于深度学习一点思考》的公开分享。近年来&#xff0c;深度神经网络在语音、图像领域取得突出进展&#xff0c;以…

浅析C#的事件处理和自定义事件

一、简单的自定义事件(1)&#xff1a;无参数 namespace UserInputMonitor { class UserInputMonitor { public delegate void UserRequest(object sender, EventArgs e); //定义委托 public event UserRequest OnUserRequest; //此委托类型类型的事件 public void Run() { bool…

SpringBoot 自带工具类~ObjectUtils

org.springframework.util.ObjectUtils 1、获取对象的基本信息 // 获取对象的类名。参数为 null 时&#xff0c;返回字符串&#xff1a;"null" String nullSafeClassName(Object obj) // 参数为 null 时&#xff0c;返回 0 int nullSafeHashCode(Object obje…

ibatis常用的集中判断语句

<isPropertyAvailable> 属性是存在<isNotPropertyAvailable> 属性不存在<isNull> 属性值是null<isEmpty> 判断Collection.size<1或String.length()<1<isEqual> 等于<isNotEqual> 不等于<isGreaterThan> 大于<isGreaterEqua…

网络计算机显示10,win10电脑网络显示一个球怎么回事

win10电脑网络显示一个球怎么回事&#xff1f;win10上不了网怎么办&#xff1f;其实这个是网络连接图标&#xff0c;只是因为没网络了就会变成地球图标。那么当出现win10网络变成球状怎么办呢&#xff1f;下面小编教下大家win10电脑网络显示一个球的解决方法。方法一&#xff1…

专家观点 | 李德仁:基于云计算的智慧城市运营脑

来源&#xff1a;智慧城市产业与技术创新战略联盟中国科学院、中国工程院院士李德仁发表了“基于云计算的智慧城市运营脑”的主题报告&#xff0c;深度解读了以公共云服务平台为核心的智慧城市运营脑。首先&#xff0c;李院士就智慧城市及其应用发表了自己的见解。他认为&#…

python3 中的 eval 函数

From&#xff1a;http://blog.csdn.net/zhanh1218/article/details/37562167 Python:eval的妙用和滥用&#xff1a;https://blog.csdn.net/zhanh1218/article/details/37562167 python eval()&#xff1a;http://www.cnblogs.com/dadadechengzi/p/6149930.html Python eval 函…

SpringBoot 自带工具类~StringUtils

org.springframework.util.StringUtils 1、字符串判断工具 // 判断字符串是否为 null&#xff0c;或 ""。注意&#xff0c;包含空白符的字符串为非空 boolean isEmpty(Object str) // 判断字符串是否是以指定内容结束。忽略大小写 boolean endsWithIgnoreCase…

C语言中float,double类型,在内存中的结构(存储方式).

从存储结构和算法上来讲&#xff0c;double和float是一样的&#xff0c;不一样的地方仅仅是float是32位的&#xff0c;double是64位的&#xff0c;所以double能存储更高的精度。 任何数据在内存中都是以二进制&#xff08;0或1&#xff09;顺序存储的&#xff0c;每一个1或0被称…

html超链接去虾线,挑虾线别只会用牙签了,渔民都是这样做的,1秒处理一个,超方便...

现在大家的生活条件已经越来越好&#xff0c;所以说人们在城市的时候也是越来越注意饮食这一方面了&#xff0c;但其实大家在做饭的时候都喜欢买上一些营养丰富的食材&#xff0c;就像是在最近几年海鲜也是让大家都非常喜欢的。海鲜是我们日常生活中都非常喜欢的一个美食&#…

AI将成科学家“高级定制”工具

来源&#xff1a;科技日报 作者&#xff1a;房琳琳化学家有了新的实验助手——人工智能&#xff08;AI&#xff09;。随着深度学习算法的进一步应用&#xff0c;AI计算机程序能帮助药物化合物等小有机分子产生所需的反应序列&#xff0c;制定合成路径。《自然》杂志近日发表了…

Xvfb 虚拟现实库 之 Python 虚拟桌面 pyvirtualdisplay

如何在Xvfb中运行Selenium&#xff1f;&#xff1a;https://cloud.tencent.com/developer/ask/107705 命令&#xff1a;nohup Xvfb -ac :7 -screen 0 1366x1024x8 -maxclients 512 >/dev/null & Is there a Windows equivalent to PyVirtualDisplay&#xff1a;https:…

SpringBoot 自带工具类~CollectionUtils

org.springframework.util.CollectionUtils 1、集合判断工具 // 判断 List/Set 是否为空 boolean isEmpty(Collection<?> collection) // 判断 Map 是否为空 boolean isEmpty(Map<?,?> map) // 判断 List/Set 中是否包含某个对象 boolean containsIns…

因HTTP的Header长度过长导致下载文件名出现乱码的问题

在通过IE直接下载文件的时候&#xff0c;我们可能会遇到一个比较常见的问题&#xff0c;那就是&#xff1a;我们下载的文件的文件名如果过长的话&#xff0c;就会出现&#xff0c;弹出的提示框的文件标题名变成乱码&#xff0c;即“%f%e%1”这样的乱码&#xff0c;而且点击保存…

华为式创新与海尔式创新——两条道路考验中国制造

来源&#xff1a;企业管理杂志&#xff08;ID&#xff1a;qyglzz&#xff09;作者&#xff1a;吴兴杰&#xff0c;中国管理科学研究院专家咨询委员会副主任、学术委员会委员、研究员以华为为代表的聚合化创新之路非常难走而又不得不走&#xff0c;否则永远只能当二流甚至三流企…