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

你可能感兴趣的:(python,json,python)