当前位置: 首页 > news >正文

Python表格格式转换模块:tablib

文章目录

    • 安装
    • 创建表格
    • 导出数据
    • 读写

安装

Tablib是Python的表格转换插件,支持不同格式表格之间的转换,其推荐的安装方式为

pip install "tablib[all]"

其中,all等同于html, pandas, ods, xls, xlsx, yaml,表示在安装tablib的基础上,同时对这些不同的文件格式提供支持。如果不需要,也可以只安装tablib

pip install tablib

创建表格

尽管tablib的主打功能是格式转换,但为了有一个可供操作的数据,这里先讲解一下tablib的创建表格的功能。

import tablibdata = tablib.Dataset()data.headers = ['姓名', '性别']data.append(["小王", "男"])  # 添加行
data.append(["小李", "女"])data.append_col([22, 20], header='年龄')data['姓名']    # ['小王', '小李']
data[0]         # ('小王', '男', 22)
print(data.dict)
# [{'姓名': '小王', '性别': '男', '年龄': 22}, {'姓名': '小李', '性别': '女', '年龄': 20}]

【Dataset】是tablib的主要数据结构,可以理解为表格。【headers】是表格的标题属性。

【append】用于添加行;【append_col】用于添加列。

最终得到了如下表格

姓名性别年龄
小王22
小李20

导出数据

【dict】是Dataset中的一个属性,以字典的形式存储着Dataset中的数据。而datalib的主打功能,就是将这些数据转化为各种不同的格式,故而Dataset中也封装了各种不同的属性,包括:cli, csv, dbf, df, html, jira, json, latex, ods, rst, tsv, xls, xlsx, yaml等,示例如下

print(data.csv)
# 姓名,性别,年龄
# 小王,男,22
# 小李,女,20print(data.yaml)
# {姓名: 小王, 年龄: 22, 性别: 男}
# {姓名: 小李, 年龄: 20, 性别: 女}

此外,通过export函数,可以通过字符串来声明其转换格式

data.export("json")
# '[{"姓名": "小王", "性别": "男", "年龄": 22}, {"姓名": "小李", "性别": "女", "年龄": 20}]'

读写

Dataset数据在导出之后,可以直接存储为对应文件

with open("test.csv", 'w', newline="") as t:t.write(data.csv)

如上即可将表格以csv的格式写入test.csv文件。在open函数中,newline默认为回车,如不更改,会在行间添加一个空行。

读取为其逆过程

with open("test.csv", 'r') as t:d1 = tablib.Dataset().load(t, format='csv')print(d1)
# 姓名|性别|年龄
# --|--|--
# 小王|男 |22
# 小李|女 |20

【load】即为Dataset中用于加载数据的方法。其两个


http://www.mrgr.cn/news/61687.html

相关文章:

  • C++学习路线(数据库部分)二
  • C++17 折叠表达式
  • linux系统安装软件的三种方式
  • k8s 二进制部署安装(一)
  • Visionpro —— CogIDTool工具详解
  • 李宇皓现身第十届“文荣奖”,allblack造型帅气绅士引关注
  • 《机器学习by周志华》学习笔记-神经网络-04全局最小误差与局部极小误差
  • Vue.nextTick 使用指南:数据更新与 DOM 同步利器
  • webstrom编辑器中出现很多NBSP但是我去搜NBSP是没有的。复制这个编辑器中的NBSP粘贴发现这是个空格。怎么解决
  • Docker:技术架构的演进之路
  • 元素 offset client scroll 相关属性简介
  • Redis有什么不一样?
  • 【JVM第4课】程序计数器
  • 重构: 改善既有代码设计 - 第二版 第6--10章
  • 《IMM交互式多模型滤波MATLAB实践》专栏目录,持续更新……
  • HarmonyOS:$$语法:内置组件双向同步
  • 探索SpringBoot:构建高效闲一品交易平台
  • 微信支付宝小程序SEO优化的四大策略
  • 2024年10月HarmonyOS应用开发者基础认证全新题库
  • 打造城市新地标:气膜综合体育馆开放共享新体验—轻空间
  • idea 创建java文件增加注释
  • 3.1 大数据时代
  • ubuntu20.04系统安装
  • JavaWeb——Web入门(2/9)-SpringBootWeb:快速入门(入门程序需求、开发步骤、项目相关文件说明、小结)
  • 精益求精:提升机器学习模型表现的技巧”
  • 「C/C++」C++20 之 #include<ranges> 范围