python读取json文件

一、基础

(1)字符串处理

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:

  • json.dumps(): 对数据进行编码。
  • json.loads(): 对数据进行解码。

(2)如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。例如:

# 写入 JSON 数据 
with open('data.json', 'w') as f: 
json.dump(data, f)
 # 读取数据
 with open('data.json', 'r') as f: 
data = json.load(f)

二、实例,爬取的json文件有时候是多个json对象串联。

(1)格式1:{}{}{}{}

仅当您的JSON对象背对背写到文件中且中间没有换行符时,才使用此选项。

A.Json
内容格式:{}{}{}{}{}{}


Read.py
from json import JSONDecoder
from functools import partial
# 解析{}{}{}的函数。
def json_parse(fileobj, decoder=JSONDecoder(), buffersize=2048):
    buffer = ''
    for chunk in iter(partial(fileobj.read, buffersize), ''):
         buffer += chunk
         while buffer:
             try:
                 result, index = decoder.raw_decode(buffer)
                 yield result
                 buffer = buffer[index:].lstrip()
             except ValueError:
                 # Not enough data to decode, read more
                 Break
If __name__ =’__main__’:
	# data_list = []
    # filename就是A.json
	with open('yourfilename', 'r') as infh:
    		for data in json_parse(infh):
			Print(data)
        			

(2) 格式2

{}

{}

{}

如果JSON文件中对象{}和其他对象{}有换行符,并且每个JSON对象都限于一行。

A.JSON

内容格式为:

{}

{}

{}

则可以用以下方式处理:

A.JSON

内容格式为:

{}

{}

{}


Read.py
import json

data = []
# file就是上边的A.JSON文件
with open('file') as f:
    for line in f:
        data.append(json.loads(line))

参考资料:

A、https://docs.python.org/3/library/json.html

B、https://stackoverflow.com/questions/12451431/loading-and-parsing-a-json-file-with-multiple-json-objects/12451465#12451465

C、https://stackoverflow.com/questions/21708192/how-do-i-use-the-json-module-to-read-in-one-json-object-at-a-time/21709058#21709058

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值