【原创】Python网络爬虫

Python爬虫-数据存储学习笔记之json文件处理

2020-04-11  本文已影响0人  复苏的兵马俑

1、json描述

   JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

2、json支持的数据格式

   1)对象(字典),使用大括号{}
   2)数组(列表),使用中括号[]
   3)整型、浮点型
   4)字符串类型(字符串必须要用双引号,不能用单引号)
  注:多个数据之间使用逗号分开,json本质上就是一个字符串。

3、字典和列表转json

import json
persons = [
    {
        'name': 'Kevin',
        'age': 28,
        'job': 'PM',
    },
    {
        'name': 'Jose',
        'age': 25,
        'job': 'PM'
    }
]
json_str = json.dumps(persons, ensure_ascii=False)

# 打印输出
print('json_str 的数据类型为 {}'.format(type(json_str)))
print('json_str = {}'.format(json_str))

   运行结果:

json_str 的数据类型为 <class 'str'>
json_str = [{"name": "Kevin", "age": 28, "job": "PM"}, {"name": "Jose", "age": 25, "job": "PM"}]

   jsondumps的时候,只能存放ascii的字符,因此会将中文进行转义,这时候我们可以使用ensure_ascii=False关闭这个特性。
   在Python中,只有基本数据类型才能转换成JSON格式的字符串,也即:int、float、str、list、dict、tuple。

   1)将json数据写入文件:

import json
persons = [
    {
        'name': 'Kevin',
        'age': 28,
        'job': 'PM',
    },
    {
        'name': 'Jose',
        'age': 25,
        'job': 'PM'
    }
]
json_str = json.dumps(persons, ensure_ascii=False)

# 使用write()方法将json内容写入文件‘persons.json’
with open('persons.json', 'w', encoding = 'utf-8') as fp:
    fp.write(json_str)

   2)将json数据直接dump到文件:
   json模块中除了dumps函数,还有一个dump函数,这个函数可以传入一个文件指针,直接将字符串dump到文件中,示例代码如下:

import json
persons = [
    {
        'name': 'Kevin',
        'age': 28,
        'job': 'PM',
    },
    {
        'name': 'Jose',
        'age': 25,
        'job': 'PM'
    }
]

# 使用dump()方法将json内容写入文件‘persons.json’
with open('persons.json', 'w', encoding = 'utf-8') as fp:
    json.dump(persons, fp, ensure_ascii = False)

   3)将json数据loads成Python对象:

import json
json_str = '[{"name": "张三", "age": "18", "country": "中国"}, {"name": "李四", "age": "20", "country": "美国"}, {"name": "王麻子", "age": "25", "country": "英国"}]'
persons = json.loads(json_str)
print('persons 的数据类型为 {}'.format(type(persons)))
for person in persons:
    print('person = {}'.format(person))

   运行结果:

persons 的数据类型为 <class 'list'>
person = {'name': '张三', 'age': '18', 'country': '中国'}
person = {'name': '李四', 'age': '20', 'country': '美国'}
person = {'name': '王麻子', 'age': '25', 'country': '英国'}

   3)使用load从文件读取json数据:

import json
with open('persons.json', 'r', encoding='utf-8') as fp:
    persons = json.load(fp)
    print('persons 的数据类型为 {}'.format(type(persons)))
    for person in persons:
        print('person = {}'.format(person))

   运行结果:

persons 的数据类型为 <class 'list'>
person = {'name': '张三', 'age': '18', 'country': '中国'}
person = {'name': '李四', 'age': '20', 'country': '美国'}
person = {'name': '王麻子', 'age': '25', 'country': '英国'}
上一篇 下一篇

猜你喜欢

热点阅读