json,pickle,collections,openpyxl模块

json,pickle,collections,openpyxl模块

json模块

​ 它是一个序列化模块

json:

是一个‘第三方’的特殊数据格式

​ 可以将python数据类型---------》json数据格式---------》字符串----------》文件中

其他语言要想使用python的数据:

​ 文件中---------》字符串------------》json数据格式------------》其他语言的数据类型

注意:在json中,所有的字符串都是双引号

元组比较特殊:

​ python中的元组,若将其转换成json数据,内部会将元组转换成列表

import json
tup = (1, 2, 3)
with open(r'user.txt', 'w', encoding='utf-8') as rf:
    json.dump(tup, rf, ensure_ascii=False)
    
[1, 2, 3]

​ set是不能转换成json数据的

为什么要使用json:

​ 为了让不同的语言之间数据可以分享

如何使用:

import json

json.dumps:

json.dumps() , f=open() -------->f.write()

json_str = json.dumps(tup)
print(json_str)
str1 = '你是谁啊'
json_str = json.dumps(str1)
print(json_str)

"u4f60u662fu8c01u554a"
json_str1 = json.dumps(str1,ensure_ascii=False)
"你是谁啊"

序列化

json.loads:

f = open(), str = f.read(), json.loads(str)

python_data = json.loads(json_str)
print(python_data)

你是谁啊

反序列

json.dump()

内部实现 f.write()

json.load()

内部实现f.read()

dump,load:使用更方便

注意:保存json数据时,用.json作为文件的后缀名

​ ensure_ascii将默认的ascii取消设置为False,可以在控制台看到中文,否则在控制台看到中文,否则看到的是bytes类型数据

import json
tup = (1, 2, 3)
with open(r'user.json', 'w', encoding='utf-8') as wf:
    json.dump(tup, wf, ensure_ascii=False)
    
[1, 2, 3]

with open(r'user.json','r',encoding='utf-8') as rf:
    tup_txt = json.load(rf)
    print(tup_txt)
    print(type(tup_txt))
    
[1, 2, 3]
<class 'list'>

pickle模块:

​ pickle是一个python自带的序列化模块

​ 优点:

​ 可以支持python中所有的数据类型

​ 可以直接存‘bytes类型’的数据,pickle存取速度更快

​ 缺点:

​ 只能支持python去使用,不能跨平台

import pickle

set1 = {
    1, 2, 3, 4
}
with open(r'user1.pickle', 'wb') as f:
    pickle.dump(set1, f)
with open(r'user1.pickle', 'rb') as f:
    print(pickle.load(f))
    
    �cbuiltins
set
q ]q(KKKKe�qRq.
    {1, 2, 3, 4}

python中的元组,若将其转换成pickle数据,内部不会将元组转换成列表

tuple1 = (1,2,3)
tuple1_obj = pickle.dumps(tuple1)
print(tuple1_obj)
print(pickle.loads(tuple1_obj
                   
                   
b'x80x03Kx01Kx02Kx03x87qx00.'
(1, 2, 3)

python默认八大数据:

​ -整型

​ -浮点型

​ -字符串

​ -字典

​ -元组

​ -列表

​ -集合

​ -布尔

collections模块:

​ 提供一些python八大数据类型“以外的数据类型”

具名元组:

​ 具名元组 只是一个名字

应用场景:

​ 坐标

from collections import namedtuple

有序字典:

python中的字典是无序的

collections中提供了有序的字典

from collections import OrderedDict

具名元组

from collections import namedtuple

传入可迭代对象是有序的

应用:坐标

将’坐标‘变成’对象‘的名字

from collections import namedtuple
point = namedtuple('坐标',['x','y'])

# point = namedtuple('坐标','x y')
#
# point = namedtuple('坐标',('x','y'))

p = point(1, 2)

print(p)

print(type(p))


坐标(x=1, y=2)
<class '__main__.坐标'>

演员的信息

p = namedtuple('电影', ['city', 'movie_type', 'name'])
data = p('大阪', 'action', 'c老师')
print(data)

电影(city='大阪', movie_type='action', name='c老师')

有序字典

from collections import OrderedDict
order_dict = OrderedDict({'x': 1, 'y': 2})
print(order_dict)
print(type(order_dict))
print(order_dict['x'])
print(order_dict.get('y'))

OrderedDict([('x', 1), ('y', 2)])
<class 'collections.OrderedDict'>
1
2

生成扑克牌:

# 获取扑克牌对象
card = namedtuple('扑克牌', 'color number')
# 由扑克牌对象产生一张张扑克牌
red_A = card('♥', 'A')
red_K = card('♠', 'K')
print(red_A, red_K)


扑克牌(color='♥', number='A') 扑克牌(color='♠', number='K')

openpyxl模块

​ 这是第三方模块

​ 可以对excel表格进行操作的模块

下载:

pip3 install openpyxl

excel版本:

2003之前:

​ excle名字:xls

2003以后:

​ excel名字:xlsx

- 配置永久第三方源:
    D:Python36Libsite-packagespip\_internalmodelsindex.py
from openpyxl import Workbook
from openpyxl import load_workbook

# 获取excel文件对象
# wb_obj = Workbook()
# wb1 = wb_obj.create_sheet('python1', 1)
# wb2 = wb_obj.create_sheet('python2', 2)
# # print(wb_obj)
# # wb_obj.save('尼玛炸了.xlsx')
# # 修改工作表名字,将python1改为大宝贝
# print(wb1.title)    # 文件处于打开状态时,不允许访问  *************
# wb1.title = '艺昕大宝贝.xlsx'
# print(wb1.title)
# # 为第一张工作表添加值
# # wb1['工作簿中的表格未知']
# wb1['A10'] = 200
# wb1['B10'] = 1000
# wb1['C10'] = '=SUM(A10:b10)'
# wb2['A1'] = 100
# wb_obj.save('唐艺昕大宝贝.xlsx')
# print('excel表格生成成功!')

# # 读取数据
wb_obj = load_workbook('唐艺昕大宝贝.xlsx')
print(wb_obj)

# wb_obj['表名']
wb1 = wb_obj['艺昕大宝贝.xlsx']
print(wb1['A10'].value)
wb1['A10'] = 20
print(wb1['A10'].value)
wb_obj.save('唐艺昕大宝贝.xlsx')


# 批量写入数据
dict1 = {'name': 'tank',
         'age': 17
         }
wb_obj = Workbook()
wb1 = wb_obj.create_sheet('ship.xlsx')
n = 1
for key, value in dict1.items():
    wb1['A%s' % n] = key
    wb1['B%s' % n] = value
    n += 1
wb_obj.save('批量插入的数据.xlsx')


原文地址:https://www.cnblogs.com/godlover/p/11884176.html