暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python爬虫-18-python与json的爱恨情仇

运维家 2022-05-29
1095

JSON(JavaScript Object Notation)
是一种轻量级的数据交换格式。易于人阅读和编写。json
作为流传广泛的数据格式,我们必须得知道使用python
是如何处理的,毕竟json的本质也是字符串嘛。

1、json支持的数据格式

1)对象(字典),使用花括号{};
2)数组(列表),使用中括号[];
3)整形、浮点型、布尔类型、Null;
4)字符串类型,必须用双引号,单引号会无法解析。

2、python字典和列表转换成json

方法:

json.dumps

示例:

import json

Jier = [
    {'username''yunweijia'},
    {'age''26'},
    {'address''beijing'},
    'nihaoya''wohaoya'
]

print(type(Jier))
Suner = json.dumps(Jier)
print(type(Suner))
print(Suner)

运行结果如下:

<class 'list'>
<class 'str'>
[{"username":
 "yunweijia"}, {"age""26"}, {"address""beijing"}, "nihaoya""wohaoya"]

有人说了,看起来不是差不多嘛,但是我们可以发现原来是list
类型,现在变成了str
,且所有的单引号都变成双引号了嘛。

3、json转换成python字典和列表

方法:

json.loads

示例:

import json

Jier = '[{"username": "yunweijia"}, {"age": "26"}, {"address": "beijing"}, "nihaoya", "wohaoya"]'

print(type(Jier))
Suner = json.loads(Jier)
print(type(Suner))
print(Suner)

运行结果如下:

<class 'str'>
<class 'list'>
[{'username':
 'yunweijia'}, {'age''26'}, {'address''beijing'}, 'nihaoya''wohaoya']

同上面正好相反哈,正好是将json
str
模式,变成了python
list
模式,且双引号变成了单引号

4、将json格式的数据直接写入文件

方法:

json.dump

示例:

import json

Jier = [
    {'username''yunweijia'},
    {'age''26'},
    {'address''beijing'},
    'nihaoya''wohaoya'
]

with open('ceshi.txt''w', encoding='utf-8'as f:
    json.dump(Jier, f)
    f.close()

ceshi.txt
文件中的内容如下:

[{"username""yunweijia"}, {"age""26"}, {"address""beijing"}, "nihaoya""wohaoya"]

5、从文件中读取json格式数据

方法:

json.load

示例:

import json

with open('ceshi.txt''r', encoding='utf-8'as f:
    Jier = json.load(f)
    print(type(Jier))
    print(Jier)
    f.close()

运行结果如下:

<class 'list'>
[{'username':
 'yunweijia'}, {'age''26'}, {'address''beijing'}, 'nihaoya''wohaoya']

我们可以发现,虽然文件中存放的是json
类型的字符串,其实当python
使用json.load
方法读取之后,他依旧会变成python
语言的list
或者dict
类型,这里需要注意。

6、重要参数

ensure_ascii=False  # 默认是开启的状态,所以我们配置的时候,只需要False即可

有时候你会发现,运行之后中文会出现乱码,我们不妨添加上这个参数试试,示例如下:

import json

Jier = [
    {'username''运维家'},
    {'age''26'},
    {'address''北京'},
    'nihaoya''我好呀'
]

Suner = json.dumps(Jier)
print(Suner)

运行结果如下:

[{"username""\u8fd0\u7ef4\u5bb6"}, {"age""26"}, {"address""\u5317\u4eac"}, "nihaoya""\u6211\u597d\u5440"]

可以看到python
通过json.dumps
转换出来的json
类型中,中文转换成乱码了,我不认识哎。。。那么我们加上ensure_ascii
参数试试,示例如下:

import json

Jier = [
    {'username''运维家'},
    {'age''26'},
    {'address''北京'},
    'nihaoya''我好呀'
]

Suner = json.dumps(Jier, ensure_ascii=False)
print(Suner)

运行结果如下:

[{"username""运维家"}, {"age""26"}, {"address""北京"}, "nihaoya""我好呀"]

至此,本文结束,相关内容每日更新。


文章转载自运维家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论