python如何读取和存储dict()与.json格式文件
作者:勤奋的清风 发布时间:2021-12-07 16:13:36
读取和存储dict()与.json格式文件
读取.json格式文件并将数据保存到字典中
数据文件:hg.json
{"商家名称": "珍滋味港式粥火锅(工体店)", "评分": 27.0, "地址": "火锅工人体育场东路丙2号中国红街3号楼2层里", "人均消费": 174, "评论数量": 2307}{"商家名称": "井格老灶火锅(望京新世界店)", "评分": 26.2, "地址": "火锅望京广顺南大街路16号", "人均消费": 105, "评论数量": 1387}{"商家名称": "脸谱港式火锅(酒仙桥丽都店)", "评分": 24.5, "地址": "火锅芳园西路6号一层", "人均消费": 218, "评论数量": 39}
针对上述数据,可以采用如下方法将json编码的字符串转换为python数据结构dict:
# -*- coding: utf-8 -*-
import json
import codecs
data = []
with codecs.open("hg.json", "r", "utf-8") as f:
for line in f:
dic = json.loads(line)
data.append(dic)
print(json.dumps(dic, indent=4, ensure_ascii=False, encoding='utf-8'))
保存字典数据到.json文件中
dic = {"商家名称": "井格老灶火锅(望京新世界店)", "评分": 26.2, "地址": "火锅望京广顺南大街路16号", "人均消费": 105, "评论数量": 1387}
with codecs.open('hg.json','a', 'utf-8') as outf:
json.dump(dic, outf, ensure_ascii=False)
outf.write('\n')
在命令行中输出字典时的乱码问题
如果字典数据中有中文的话,print dic是无法正常显示中文的,可通过下面的方法格式化输出字典数据:
dic = {"北京": [446, 208.7, 110000], "天津": [454.2, 219.8, 120000], "上海": [498.6, 319.7, 310000]}
print(json.dumps(dic, ensure_ascii=False, encoding='utf-8', indent=4))
将字符串数据转化为字典数据
两种转化方法
user = "{'name' : 'LiHua', 'sex' : 'male', 'age': 18}"
dic1 = eval(user)
exec("dic2="+user)
补充
一般来说,json解码时会从所提供的数据中创建出字典或者列表,如果想创建其它类型的对象,可以为json.loads()方法提供object_pairs_hook或者object_hook参数。下面的示例展示了我们应该如何将json数据解码为OrderedDict(有序字典),这样可以保持数据的顺序不变。
>>> s = '{"name":"ACME", "SHARES":50, "PRICE":490}'
>>> from collections import OrderedDict
>>> data = json.load(s, object_pairs_hook=OrderedDict)
>>> data
OrderedDict([('name', 'ACME'), ('shares', 50), ('price', 490)]
>>>
将dict数据写入json文件中
现在获取一个医药网站的数据,最终转换成dict类型,需要将数据写入JSON文件中,以方便后面数据的使用
with open('./medical.json', 'w',encoding='utf-8') as fp:
json.dump(data, fp)
但得到的最终数据却是这样:
本来应该是正常的中文字符串,却是ASCII编码,因此在dump方法中添加一个ensure_ascii参数,原因是dump()方法将字典转化为字符串,会默认将其中unicode码以ascii编码的方式输入到字符串中
with open('./medical.json', 'w',encoding='utf-8') as fp:
json.dump(data, fp,ensure_ascii=False)
来源:https://blog.csdn.net/qq_23926575/article/details/76566209
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 简介观察者模式是行为型模式的一种,定义了对象间一对多的关系。当对象的状态发生变化时候,依赖于它的对象会得到通知。适用场景类似触发钩子事件,可
- 实现代码/// <summary>/// 去除HTML标记/// </summary&
- 网页显示不正常,出现图片错位,文字跑远……等等,别急,试试IE8自带的”兼容性视图”功能吧!其实出现网页显示问题,一般不是您的电脑或者浏览器
- Python中列表(list)的实现其实是一个数组,当要查找某一个元素的时候时间复杂度是O(n),使用list.index()方法,但是随着
- Python中numpy数组的合并有很多方法,如- np.append() - np.concatenate() - np.stack()
- 原文:Unobtrusive Ajax。今天才看见的一个Presentation,是Jesse Skinner在06年10月发表的。虽然题目
- MySQL中模式就是数据库SHOW DATABASES;show databases;罗列所有数据库名称CREATE DATABASE &l
- 前言在python中,print是重要的输出语句,让我们更方便的知道程序的运行状况,但是这样还不够,我们也可以用print来给周围的小伙伴秀
- 1、模拟退火算法退火是金属从熔融状态缓慢冷却、最终达到能量最低的平衡态的过程。模拟退火算法基于优化问题求解过程与金属退火过程的相似性,以优化
- 中国,美国,英国3国时间js同步动态显示,对于做企业网站的朋友相信用的到,特别是做英文网站的朋友,加上这一段代码会给你的网站增色不少!本文j
- 文字的多行处理在dom元素中很好办。但是canvas中没有提供方法,只有通过截取指定字符串来达到目的。那么下面就介绍我自己处理的办法:wxm
- numpy之sum()sum(a)默认为对输入参数中的所有元素进行求和>>> aarray([ 0, 1, &
- 我将示范微优化(micro optimization)如何提升python代码5%的执行速度。5%!同时也会触怒任何维护你代码的人。但实际上
- 为index.php文件设置只读属性后,木马就没权限给你文件末尾追加广告了。下面我们看具体的代码,设置index.php只读:<?ph
- 上次亚马逊的商品信息都获取到了,自然要看一下评论的部分。用户的评论能直观的反映当前商品值不值得购买,亚马逊的评分信息也能获取到做一个评分的权
- 本文主要介绍Python3.9的一些新特性,如:更快速的进程释放,性能的提升,简便的新字符串函数,字典并集运算符以及更兼容稳定的内部API,
- 本文列出了初学网页编程中常用到的一些代码和一些技巧,简单实用,您一定用得到。1、oncontextmenu="window.eve
- 本文实例讲述了php tpl模板引擎定义与使用。分享给大家供大家参考,具体如下:tpl.php<?phpnamespace tpl;/
- 下表列出了 Microsoft ACCESS 的命令行选项:选项 效果database 打开指定的 Microsoft Access 数据库
- 什么是DLL文件?DLL文件为动态链接库(英语: Dynamic-link library, 缩写为DLL)它是微软公司在微软视窗操作系统中