python json & pickle 模块

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

一、python 3 JSON模块使用(用于字符串和python数据类型间进行转换)
import json
data = {
    "北京市": {
        "朝阳区": ["三里屯", "望京", "国贸"],
        "海淀区": ["五道口", "学院路", "后厂村"],
        "东城区": ["东直门", "崇文门", "王府井"],
    },
    "上海市": {
        "静安区": [],
        "黄浦区": [],
        "虹口区": [],
    }
}

1、json.dumps    dict-->strting

#json.dumps  将数据通过特殊的形式转换为所有程序语言都认识的字符串

s_dumps = json.dumps(data, sort_keys=True, indent=4, ensure_ascii=False)
print(type(s_dumps))
print(s_dumps)

output:
<class 'str'>
{
    "上海市": {
        "虹口区": [],
        "静安区": [],
        "黄浦区": []
    },
    "北京市": {
        "东城区": [
            "东直门",
            "崇文门",
            "王府井"
        ],
        "朝阳区": [
            "三里屯",
            "望京",
            "国贸"
        ],
        "海淀区": [
            "五道口",
            "学院路",
            "后厂村"
        ]
    }
}

2、json.loads  string-->dict

r_loads = json.loads(s_dumps)
print(type(r_loads))
print(r_loads)

output:
<class 'dict'>
{'上海市': {'虹口区': [], '静安区': [], '黄浦区': []}, '北京市': {'东城区': ['东直门', '崇文门', '王府井'], '朝阳区': ['三里屯', '望京', '国贸'], '海淀区': ['五道口', '学院路', '后厂村']}}

3、json.dump  写入文件

#json.dump  将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件

with open("data.json", "w", encoding="UTF-8") as f_dump:
    s_dump = json.dump(data, f_dump, indent=4, ensure_ascii=False)

print(type(s_dump))
print(s_dump)


output:
<class 'NoneType'>
None

4、json.load  从文件读取

with open("data.json", "r", encoding="utf-8") as f_load:
    r_load = json.load(f_load)

print(type(r_load))
print(r_load)

output:
<class 'dict'>
{'北京市': {'朝阳区': ['三里屯', '望京', '国贸'], '海淀区': ['五道口', '学院路', '后厂村'], '东城区': ['东直门', '崇文门', '王府井']}, '上海市': {'静安区': [], '黄浦区': [], '虹口区': []}}

 二、python 3 pickle  模块使用(用于python特有的类型 和 python的数据类型间进行转换)

import pickle
data = {'k1': 123, 'k2': 'Hello'}

1、pickle.dumps    将数据通过特殊的形式转换为只有python语言认识的字符串

p_str = pickle.dumps(data)
print(type(p_str))
print(p_str)

output:
<class 'bytes'>
b'\x80\x03}q\x00(X\x02\x00\x00\x00k1q\x01K{X\x02\x00\x00\x00k2q\x02X\x05\x00\x00\x00Helloq\x03u.'

2、pickle.loads  

p_dict = pickle.loads(p_str)
print(type(p_dict))
print(p_dict)

output:
<class 'dict'>
{'k1': 123, 'k2': 'Hello'}

3、pickle.dump    将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件

print(type(data))
with open('data2.json', 'wb') as fp:
    pickle.dump(data, fp)

output:
<class 'dict'>

4、pickle.load

with open('data2.json', 'rb') as fo:
    p_load = pickle.load(fo)

print(type(p_load))
print(p_load)

output:
<class 'dict'>
{'k1': 123, 'k2': 'Hello'}

 

posted @ 2017-10-10 14:53  martin1317  阅读(153)  评论(0编辑  收藏  举报