关于python处理大型json文件的方法
作者:人生天天快乐 发布时间:2023-09-24 12:47:47
标签:python,处理,json文件
如图所示,要处理的数据是一个json数组,而且非常大
下图为电脑配置,使用 json.load() 方法加载上述json文件电脑直接卡死
解决思路:
先用python进行预处理,即一整个json数据加载慢,那就分开加载,每次加载一个json对象,然后使用 json.dumps()方法 存储到txt中,方便读取。当然也可以存储到内存中,根据情况而定。
算法思想:因为 json 是一种结构化的数据,所以 {} 是成对存在的。因为使用逐行读取的方法读入json文件,所以根据 {} 的数量来判断是否读取了一个完整的json对象,如果是完整的,则使用 json.dumps()方法 存储到txt中。
getUsefullData(temp + line,id)这个方法是提取自己需要的数据
def jsonProcess(fileName,round):
id = 1
with open(fileName, 'r', encoding='utf-8') as f,open('../tempData/tempFile'+str(round)+'.txt','w') as tempFile:
line = f.readline()
line = f.readline()
temp = ''
khNum = 0
id = 1
while line:
# print(line)
if line.find('{') != -1:
khNum += 1
if line.find('}') != -1:
khNum -= 1
if khNum == 0:
line = line.replace(',','')
data = getUsefullData(temp + line,id)
id += 1
if len(data) > 1:
# print(data)
try:
tempFile.write(json.dumps(data)+'\n')
except 'json.decoder.JSONDecodeError':
break
temp = ''
line = f.readline()
continue
temp += line
line = f.readline()
读取方法:
with open('../tempData/tempFile'+str(round)+'.txt') as f:
dataList = f.readlines()
# 解析保存好的list
for data in dataList:
data = json.loads(data)
来源:https://www.cnblogs.com/sk-lqbzblogs/p/15979192.html


猜你喜欢
- 前言:由于做项目需要一个树形选择器,项目用的也是element-ui框架,然而它自带的选择器组件没有树形选项,又不想引入其他的框架组件,于是
- 申明:资料来源于网络及书本,通过理解、实践、整理成学习笔记。Pythion的Selenium自动化测试之获取哔哩哔哩主播的头像以昵称命名保存
- 例如:性别 gender 男 女 保密基本语法:enum(数据值 1,数据值 2...);数据值列表在 255 个以内,使用 1 个字节来存
- 1、简介这篇博客将会非常基础,如果有MySQL经验的可以跳过,写这篇博客的原因是给初学者看的。下面将会讲解如何使用select查看指定表的单
- 在python中json分别由列表和字典组成,本文主要介绍python中字典与json相互转换的方法。使用json.dumps可以把字典转成
- 问:怎样实现ORACLE中用一条SQL实现其它进制到十进制的转换?答:具体示例如下:-----二进制转换十进制---------------
- 导语学习一下golang权限控制,保留一下demo代码作为参考Casbin是什么Casbin是一个强大的、高效的开源访问控制框架,其权限管理
- 1. 引言在日常工作中,大家都需要进行字典的相关操作,对于某些初学者,经常会写一堆繁琐的代码来实现某项简单的功能。本篇文章重点介绍一些在Py
- 这篇博客主要写flatten()作用,及其参数的含义flatten()是对多维数据的降维函数。flatten(),默认缺省参数为0,也就是说
- 我就废话不多说了,直接上代码吧!# -*- coding: utf-8 -*-"""Created on Th
- 闪回区爆满问题也是经常会遇到的问题,最关键的是闪回设置大小以及归档被默认存放在了闪回目录,恰巧今天又遇到了这个问题,就记录下处理步骤,仅供遇
- 觉得微博手动点赞太过麻烦?其实自动点赞的实现并不困难!本篇会有Cookie、session和token方面的知识,不太了解的可以先看下web
- 这是一个通过js实现的支付后的页面,点击支付会跳出一个弹窗,提示你是否要确定支付,确定后进入付后界面,该页面有着10秒倒计时,计时结束后便会
- 这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。一个特例是 Mac OS X
- 1、time模块(※※※※)import time #导入时间模块print(time.time()) #返回当前时间的时间戳,可用于计算程
- 本文记录了python 3.7.0 安装配置方法,供大家参考,具体内容如下S1 登入Python官网下载网址S2 下载后缀为exe的可执行文
- 注意:安装opencv之前需要先安装numpy,matplotlib等一、安装方法方法一、在线安装1.先安装opencv-pythonpip
- 一个很棒的 blog 文章,是 PPK 两年前写的,文章中解释了 contains() 和 compareDocumentPosition(
- 这篇博客将介绍如何使用Python,Opencv进行二维直方图的计算及绘制(分别用Opencv和Numpy计算),二维直方图可以让我们对不同
- 今天试了一下用zipfile模块读取有密码的zip压缩文件。今天用winrar 5.6将一个名字为1.xlsx的excel文件打包成1.zi