Python3 爬虫U21_json文件处理

Posted 奔跑的金鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 爬虫U21_json文件处理相关的知识,希望对你有一定的参考价值。

1.什么是json?

json(JavaScript Object Notation)是一种轻量级的数据交换格式。简单和清晰的层次结构使得json成为理想的数据交换语言。易于阅读和编写,同时也易于机器解析和生成,并有效的提升网络传输效率。
json支持的数据格式:

  • 对象(字典)。使用花括号
  • 数组(列表)。使用方括号
  • 整型和浮点型、布尔类型和null类型
  • 字符串类型(字符串之间必须要用双引号,不能用单引号)

多个数据之间使用逗号隔开
注意:json本质就是一个字符串。

json数据在线格式化网站:https://www.json.cn/

2.将Python对象dump成一个json字符串

2.1 dumps转换为字符串

import json
emp = [
    {
        "ename":"Jack",
        "age":18,
        "addr":"Kunming"
    },
    {
        "ename": "Lucy",
        "age": 18,
        "addr": "Qujing"
    }
]

json_str = json.dumps(emp)
print(type(json_str))
print(json_str)

输出结果:
<class \'str\'>
[{"ename": "Jack", "age": 18, "addr": "Kunming"}, {"ename": "Lucy", "age": 18, "addr": "Qujing"}]

从结果可以看出,json确实是一个字符串。

如果我们想要把上述得到的json写入到文件中,那么可以这么写

import json
emp = [
    {
        "ename":"Jack",
        "age":18,
        "addr":"Kunming"
    },
    {
        "ename": "Lucy",
        "age": 18,
        "addr": "Qujing"
    }
]

json_str = json.dumps(emp)
with open("emp.json","w") as f:
    f.write(json_str)

2.2 dump写入数据到文件

但是在json中提供了一个更加方便的方法dump,可以直接将数据写入到文件中,代码如下:

import json
emp = [
    {
        "ename":"Jack",
        "age":18,
        "addr":"Kunming"
    },
    {
        "ename": "Lucy",
        "age": 18,
        "addr": "Qujing"
    }
]

with open("emp.json","w") as f:
    json.dump(emp,f)

如果是转换的内容中包含了中文,json在dump的时候,只能存放ascii字符,因此会对中文进行转义,这时候,我们可以使用ensure_ascii=False关闭这个特性。

# Author:Logan
import json
emp = [
    {
        "ename":"关羽",
        "age":18,
        "addr":"Kunming"
    },
    {
        "ename": "张飞",
        "age": 18,
        "addr": "Qujing"
    }
]

with open("emp.json", "w", encoding="utf-8") as f:
    json.dump(emp, f, ensure_ascii=False)

转换后的结果如下:

3.将json转化为Python对象

3.1 loads

import json

json_str = \'[{"ename": "关羽", "age": 18, "addr": "Kunming"}, {"ename": "张飞", "age": 18, "addr": "Qujing"}]\'
emp = json.loads(json_str)
print(type(emp))
for e in emp:
    print(e)

输出结果:
<class \'list\'>
{\'ename\': \'关羽\', \'age\': 18, \'addr\': \'Kunming\'}
{\'ename\': \'张飞\', \'age\': 18, \'addr\': \'Qujing\'}

3.2 直接从文件load

import json

with open("emp.json", "r", encoding="utf-8") as f:
    emp = json.load(f)
    print(type(emp))
    for e in emp:
        print(e)

以上是关于Python3 爬虫U21_json文件处理的主要内容,如果未能解决你的问题,请参考以下文章

Python3 爬虫U11_爬取中国天气网

Python3 爬虫U09_爬取hao6v电影网

Python3 爬虫U04_cookie的使用

Python3 爬虫U03_ProxyHandler实现代理

python3下scrapy爬虫(第九卷:scrapy数据存储进JSON文件)

Python3 爬虫U11_BeautifulSoup4之select和CCS选择器提取元素