Tablib:是一款简单好用、多种格式的数据管理的Python库
1 说明:
=====
1.1 python的数据管理的库有很多,我还是觉得tablib库简单好用。
1.2 Tablib 是一个与表格格式数据有关的Python库,允许导入、导出、管理表格格式数据。
1.3 适合多种格式:
Excel (Sets + Books)
JSON (Sets + Books)
YAML (Sets + Books)
HTML (Sets)
TSV (Sets)
CSV (Sets)
2 官网:
=====
https://github.com/jazzband/tablib
https://tablib.readthedocs.io/en/stable/
https://pypi.org/project/tablib/
3 安装:
=====
pip install tablib
#本机安装
#sudo pip3.8 install tablib
4 xls格式:
=======
4.1 代码:
#---数据导出xls:方法一---
import tablib
#表头,支持中文
headers = ('序号', '用户', '年龄')
#数据
data = [
('1', 'Rooney', 20),
('2', 'John', 30),
]
#数据集合
data = tablib.Dataset(*data, headers=headers)
#打开或者新建一个1.xls,wb方式
table = open("/home/xgj/Desktop/tablib/1.xls", "wb")
#写入
table.write(data.xls)
#关闭
table.close()
4.2 操作示意和效果图:
4.3 上述代码还可以这样修改,推荐这种,效果一样:
#---数据导出xls:方法二:推荐这种---
import tablib
#表头,支持中文
headers = ('序号', '用户', '年龄')
#数据
data = [
('1', 'Rooney', 20),
('2', 'John', 30),
]
#数据集合
data = tablib.Dataset(*data, headers=headers)
with open('/home/xgj/Desktop/tablib/2.xls','wb') as f:
#f.write(data.xls)
f.write(data.export('xls')) #与上面相同
4.4 增加行和列;删除行和列
#---数据导出xls:增加行和列---
import tablib
#表头,支持中文
headers = ('序号', '用户', '年龄')
#数据
data = [
('1', 'Rooney', 20),
('2', 'John', 30),
]
#数据集合
data = tablib.Dataset(*data, headers=headers)
#增加行
data.append(['3', 'Keven',18])
data.append(['4', 'tom',22])
#增加列
data.append_col([2200, 2000,1300], header='收入')
#删除行
#del data[1:3] #删除2和3行的数据,列表截取data的索引0,1,2,3,4,1对应第2行数据序号2的数据
#删除列
#del data['Age']
with open('/home/xgj/Desktop/tablib/2.xls','wb') as f:
f.write(data.xls)
4.5 读取上述删除行和列的数据,并打印:
import tablib
data = tablib.Dataset()
#读取数据
with open('/home/xgj/Desktop/tablib/2.xls', 'rb') as f:
data.load(f, 'xls')
print(data)
序号|用户 |年龄
--|------|----
1 |Rooney|20.0
4 |tom |22.0
5 csv格式:
========
5.1 代码:
#---数据导出csv
import tablib
#表头,支持中文
headers = ('序号', '用户', '年龄')
#数据
data = [
('1', 'Rooney', 20),
('2', 'John', 30),
]
#数据集合
#dialect='unix'
#data=tablib.Dataset(*data, format='csv', headers=False) #表头隐藏
data=tablib.Dataset(*data, format='csv', headers=headers) #表头显示,注意这里不是True
#csv的特色
data.export('csv', delimiter=' ', quotechar='|')
#指定路径和文件名
with open('/home/xgj/Desktop/tablib/3.csv', 'w', newline='') as f:
f.write(data.export('csv'))
5.2 效果图:
6 json格式:
========
6.1 代码:
import tablib
#表头
headers = ('序号', '用户', '年龄')
#数据
data = [
('1', 'Rooney', 20),
('2', 'John', 30),
]
dst = tablib.Dataset(*data, headers=headers)
print(dst) #终端输出表格格式
#encoding='utf8'
with open('/home/xgj/Desktop/tablib/4.json', mode='w',encoding='utf8') as f:
#f.write(dst.json)
f.write(dst.export('json')) #与上面相同
#ensure_ascii=False
print(dst.json) #终端输出json格式
#已经被转换成Unicode码,如:"\u5e8f\u53f7"='序号'
#终端输出效果
序号|用户 |年龄
--|------|--
1 |Rooney|20
2 |John |30
[{"\u5e8f\u53f7": "1", "\u7528\u6237": "Rooney", "\u5e74\u9f84": 20}, {"\u5e8f\u53f7": "2", "\u7528\u6237": "John", "\u5e74\u9f84": 30}]
6.2 解决这个问题:#已经被转换成Unicode码,如:"\u5e8f\u53f7"='序号'
#解决办法用python的 json模块,顺带复习
import json
with open("/home/xgj/Desktop/tablib/4.json", "r", encoding='utf-8') as f:
aa = json.loads(f.read())
f.seek(0)
bb = json.load(f) # 与 json.loads(f.read())
print(aa)
print(bb)
#终端输出效果图
[{'序号': '1', '用户': 'Rooney', '年龄': 20}, {'序号': '2', '用户': 'John', '年龄': 30}]
[{'序号': '1', '用户': 'Rooney', '年龄': 20}, {'序号': '2', '用户': 'John', '年龄': 30}]
7 读取数据:
7.1 图
7.2 读取xls
7.2.1 代码:
import tablib
data = tablib.Dataset()
#读取数据
with open('/home/xgj/Desktop/tablib/1.xls', 'rb') as f:
data.load(f, 'xls')
print(data)
7.2.2 图:
csv省略
7.3 读取json
7.3.1 代码:比6.2代码简单吧,跳过json模块的load和loads的知识。
import tablib
data = tablib.Dataset()
with open('/home/xgj/Desktop/tablib/4.json', 'rb') as f:
data.load(f, 'json')
print(data)
7.3.2 效果图:
8 df格式和yaml格式:了解一下。
超级简单。
自己整理并分享出来,喜欢的就点赞、关注、转发、评论和收藏。