python_new
  • Introduction
  • First Chapter
  • 一、python基础
    • 1.1 常识
      • sys
    • 1.2 基础语法(1)
    • 1.2 基础语法(2)
    • 1.3 常见问题求解
    • 1.4 算法
  • 二、爬虫
    • urllib库(1)
      • urllib库(2)
    • requests模块(1)
      • requests模块(2)
    • 2.1 爬虫基础(3)HTTP原理
    • 2.1 爬虫基础(4)会话和Cookies
    • 2.1 爬虫基础(5)数据存储
      • Mysql存储
      • MongoDB存储
      • Redis存储
    • 2.3 正则表达式
    • 2.4 解析库lxml
      • BeautifulSoup
      • pyquery(1)
      • pyquery(2)
    • 2.5 selenium(1)
    • 2.5 seleium(2)
    • 2.6 Json
    • 2.7 scrapy
      • scrapy(2)
    • 2.9 异步加载
    • 2.6 Splash
  • ORM框架
    • SQLAlchemy
  • Django
    • 1、初阶(一)
    • 初学:投票教程(一)
    • 初学:投票教程(二)
    • 初学:投票教程(三)
    • 初学:投票教程(总结)
    • 模型(一)
    • 模型(二)
    • 视图(一)
    • 视图(二)
    • 模板(一)
    • django实际使用笔记
  • 面试题收集总结
    • 数据结构原理
    • 算法篇
      • 排序
    • 题目篇
  • python数据分析
    • 基础了解(一)
    • 基础了解(二)
    • 基础了解(三)
  • 多线程
  • 深度学习
    • 疑问
  • keras(一)
  • 神经网络
  • 图像识别
  • Docker
    • 一、基础了解
Powered by GitBook
On this page

Was this helpful?

  1. 二、爬虫

2.6 Json

一、介绍

Json,全称是JavaScript Object Notation,也就是JavaScript对象标记,它通过对象和数组的组合来表示数据,构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。

  • JS中的对象和数组

在JavaScript中,一切都是对象。因此,任何支持的类型都可以通过Json来表示,如字符串,数字,对象,数组。

在JavaScript中的对象和数组相当于python中的字典和数组

{key1:value1,key2:value2,}      # 对象
["java","javascript","vb",...]  # 数组

而一个JSON对象的格式为:

[{
    "name": "Bob",
    "gender": "male",
    "birthday": "1992-10-18"
}, {
     "name": "Selina",
    "gender": "female",
    "birthday": "1995-10-18"
}]

二、基础用法

  • json.loads()方法可以将JSON文本字符串转为JSON对象

import json

string = '''
[{
    "name": "Bob",
    "gender": "male",
    "birthday": "1992-10-18"
}, {
    "name": "Selina",
    "gender": "female",
    "birthday": "1995-10-18"
}]
'''
print(type(str))
data = json.loads(string)
print(data)
print(type(data))
#输出
[{'name': 'Bob', 'gender': 'male', 'birthday': '1992-10-18'}, {'name': 'Selina', 'gender': 'female', 'birthday': '1995-10-18'}]

注意这里string中的字符串不能使用单引号,否则会报错。

打开json文件

import json

with open('data.json', 'r') as file:
    str = file.read()
    data = json.loads(str)
    print(data)

接下来可以调用data中的信息,

data[0]['naem']
data[0].get('name')
data[0].age('age', 25)

推荐使用第二个方法,因为当这个键名不存在的时候,会返回None,而不是报错。而且还可以传入第二个参数,作为默认值。

  • json.dumps()将JSON对象转换为字符串

import json

data = [{
    'name': 'Bob',
    'gender': 'male',
    'birthday': '1992-10-18'
}]
with open('data.json', 'w') as file:
    file.write(json.dumps(data, indent = 2, ensure_ascii=False))

indent参数代表着缩进字符个数,因此可以自定义JSON的格式。如果对象中有中文,还可以设置参数ensure_ascii,保证存入文件的中文仍是中文,而不是Unicode字符。

  • json.load()把文件打开,并把字符串变换为数据类型

with open("../config/record.json",'r') as load_f:
    load_dict = json.load(load_f)
    print(load_dict)
  • json.dump()将字典转换为字符串

with open("../config/record.json","w") as f:
    json.dump(json_str,f)
    print("加载入文件完成...")
Previous2.5 seleium(2)Next2.7 scrapy

Last updated 6 years ago

Was this helpful?