一文搞定 Python 表格数据处理:Tablib 多格式转换实战解析 一文搞定 Python 表格数据处理Tablib 多格式转换实战解析【免费下载链接】tablibPython Module for Tabular Datasets in XLS, CSV, JSON, YAML, c.项目地址: https://gitcode.com/gh_mirrors/ta/tablib说到表格数据处理很多人第一反应是 pandas但如果目标只是把 Excel 换成 JSON把 CSV 拼成多工作表文件Tablib 可能是更轻、更趁手的答案。Tablib 是一个格式无关的 Python 表格数据集处理库它的核心能力就是让同一份二维数据在 CSV、XLSX、JSON、YAML、HTML、LaTeX 之间自由往返而 API 简单到令人发指——绝大多数转换一两行代码就收工了。三步完成环境搭建一条 pip 命令接入全部格式Tablib 的格式支持采用按需注册的机制逻辑集中在src/tablib/formats/__init__.py的注册表里CSV、JSON、TSV 这类零依赖格式开箱即用XLSX、YAML、ODS、pandas、DBF 等则依赖对应的第三方包。想一次性配齐所有格式直接装全家桶pip install tablib[all]装完随便打开一个 Python 会话你就能完成人生第一次格式切换import tablib data tablib.Dataset() data.headers [name, age] data.append([张三, 25]) data.append([李四, 30]) print(data.csv) # 秒出 CSV 文本 print(data.json) # 秒出 JSON 文本data.csv、data.json这种属性式写法是 Tablib 最讨喜的设计每种格式被注册成 Dataset 上的读写属性导出就像在读取数据本身完全不用记方法名。十分钟上手 Dataset把一张表装进内存随便折腾Dataset 是 Tablib 的核心类可以理解成一块住在内存里的 Excel 工作表。除了 append它还提供了一整套行列操作data tablib.Dataset() data.headers [name, age] data.append([张三, 25]) data.append([李四, 30]) # 批量追加、从头部插入 data.extend([[王五, 28], [赵六, 35]]) data.insert(0, [小李, 22]) # 按表头取整列、追加新列 print(data[name]) # [小李, 张三, 李四, 王五, 赵六] data.append_col([23, 26, 31, 29, 36], headerscore) # 查看规模 print(data.height, data.width) # 5 3还有一个很实用的接口data.dict会把整张表打包成字典列表方便和业务代码对接反过来给data.dict赋值也能把字典列表还原成 Dataset。读写口径一致几乎不用额外的心智负担。多工作表怎么办交给 Databook 一把梭单张表用 Dataset多张表就轮到 Databook 登场。它本质上是 Dataset 的容器恰好对应 Excel 里一个文件多个 Sheet的结构book tablib.Databook() book.add_sheet(sales) # 销售明细 book.add_sheet(summary) # 汇总表 print(book.size) # 2 with open(report.xlsx, wb) as f: f.write(book.export(xlsx))反向读取多工作表文件同样简单book tablib.import_book(open(report.xlsx, rb), xlsx) for sheet in book.sheets(): print(sheet.title, sheet.height)四个进阶技巧让代码更省事的隐藏招式给行打标签再一键筛选。append 时可以为行附加标签之后用filter()筛出目标子集比如只保留有效客户或经理级data.append([孙八, 40], tags[manager, senior]) managers data.filter(manager)给列挂格式化器。导出前统一美化单元格特别适合金额、日期这类展示逻辑data.add_formatter(age, lambda v: f{v}岁)动态列自动计算。传一个可调用对象进去Tablib 会自动对每一行求值新列的值随时保持最新data.append_col(colcompute_bonus, headerbonus)数据整理全家桶。sort()按列排序、stack()纵向拼接、stack_cols()横向拼接、transpose()行列转置、subset()行列切片、remove_duplicates()去重、append_separator()插入分隔行。导出到 Excel 时还会自动加粗表头、冻结首行甚至按内容自适应列宽。日常报表需要的数据整形基本全覆盖了。实战串讲从 CSV 到带汇总的多工作表 Excel把上面的能力串起来模拟一个真实需求上游丢来一份 CSV 客户表你要生成一份带汇总 Sheet的 Excel 发给业务方。import tablib raw tablib.import_set(open(customers.csv, rb), csv) # 只留有效客户按年龄排序 valid raw.filter(valid).sort(age) # 追加一个折扣计算列 valid.append_col(collambda r: r[1] * 0.9, headerdiscount) summary tablib.Dataset() summary.headers [item, value] summary.append([总客户数, valid.height]) book tablib.Databook([valid, summary]) with open(客户报表.xlsx, wb) as f: f.write(book.export(xlsx))全程没有手写任何解析与序列化代码数据的所有变形都由 Dataset 和 Databook 两个对象承接可读性非常在线。想进一步深挖每个格式的导出参数比如 Excel 的冻结窗格、公式转义开关可以翻看仓库里的docs/formats.rst核心实现集中在src/tablib/core.py。下次再遇到格式转换的活儿先试试 Tablib说不定两行代码就收工了。【免费下载链接】tablibPython Module for Tabular Datasets in XLS, CSV, JSON, YAML, c.项目地址: https://gitcode.com/gh_mirrors/ta/tablib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考