VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • Python爬虫基础讲解(十):数据持久化——json

1. 编码和解码

Python 的默认原生类型(str, int,float,list,tuple和dict)。

复制代码
import json

data = {
    'name ' : 'ACME',
    ' shares ' : 100,
    'price ' : 542.23
}

json_str = json.dumps(data)
print(json_str)
复制代码

 

表面上看,类似于Python repr()的输出。虽然内容看似是一样,但是类型却已经发生改变

print(type(json_str))

 

从无序的字典到有序的字符串,这个过程被称之为序列化。
最终我们将json保存到文件

with open('data.json ',mode='w',encoding='utf-8') as f:
  f.write(json_str)

 

1.1 中文字符串问题

复制代码
import json
data = {
    'name ' : '青灯',
    'shares': 100,
    'price' : 542.23
}
#将字典序列化为json
json_str = json.dumps(data)

# 写入json数据
with open( ' data.json',mode='w', encoding='utf-8 ' ) as f:
  f.write(json_str)
# filename:data.json
{ "name": "\u9752\u706f""shares" : 100,"price": 542.23}
复制代码

 

解决办法: json_str = json. dumps(data,ensure_ascii=False)

2. 读取数字

将json数据变为字典类型的这个过程被称之为反序列化

复制代码
#读取json数据
with open( ' data.json ', 'r', encoding='utf-8') as f:
  #反序列化
  data = json.1oad(f)

#打印数据
print(data)
print(data[ 'name '])
复制代码

 

3. 格式化输出

JSON的结果是更易于阅读的。dumps()函数接受几个参数以使输出更易读结果。

复制代码
import json

data = {'a ' : 'A''b' : (2,4),'c' : 3.0}
print( 'DATA: ', repr(data))  # DATA: { 'a' : 'A', 'b ': (2,4),'c': 3.0}

unsorted = json.dumps(data)
print( '7SON: ', json.dumps(data))  #JSON: {"a": "A","b":[2,4],"c": 3.03}
复制代码

 

编码,然后重新解码可能不会给出完全相同类型的对象。

特别是,元组成为了列表。

JSON跟Python中的字典其实是一样一样的,事实上JSON的数据类型和Python的数据类型是很容易找到对应关系的,如下面两张表所示。

Python爬虫基础讲解:数据持久化——json

 

文章出处:https://www.cnblogs.com/qshhl/p/14804925.html
 
 

相关教程