你不知道的python打印表格的方法

写在前面

Python编程中,我们经常需要在终端打印一些内容。我们知道格式化的打印方法,以及很好用的f-string,但是如何优雅的打印出一个表格呢?就像下面这段数据。


headers = ['水果', '价格', '国家']

fruits = [
  ['苹果', 4, '中国'],
  ['橙子', 5, '中国'],
  ['梨', 6, '中国'],
  ['菠萝', 7, '中国'],
]
  

如何将它像表格一样打印到终端上呢?你可能会想到通过硬编码来逐行打印,其实已经有现成的轮子可以使用了,下面我们就来探索实现方法。

硬编码实现表格打印


headers = ['水果', '价格', '国家']

fruits = [
  ['苹果', 4, '中国'],
  ['橙子', 5, '中国'],
  ['梨', 6, '中国'],
  ['菠萝', 7, '中国'],
]

# 打印表头
print('|'.join(headers))

# 打印分隔线
print('-' * (len(headers) * 10))

# 打印每行数据
for fruit in fruits:
    print('|'.join(str(item) for item in fruit))

运行以上代码,将会输出以下表格:

水果|价格|国家
----------------
苹果|4|中国
橙子|5|中国
梨|6|中国
菠萝|7|中国   

在这个示例中,我们使用了 print 函数来打印表格中的每一行。首先打印出表头,然后打印出分隔线,最后使用循环遍历每一行数据并打印出来。我们使用 '|'.join() 函数来将每行数据的各列用竖线分隔。

但是,这个方法只能满足基本的表格,不包含格式化或对齐操作。如果你需要更复杂的表格显示,你可能需要使用其他库或工具来实现,如 PrettyTable、Texttable。

PrettyTable

使用 PrettyTable 库可以实现更复杂和美观的表格显示效果。下面是使用 PrettyTable 库来打印表格的示例代码:


from prettytable import PrettyTable

headers = ['水果', '价格', '国家']

fruits = [
  ['苹果', 4, '中国'],
  ['橙子', 5, '中国'],
  ['梨', 6, '中国'],
  ['菠萝', 7, '中国'],
]

table = PrettyTable(headers)
table.add_rows(fruits)

print(table)

运行以上代码,将会输出如下的美观表格:

+--------+------+--------+
|  水果  | 价格 |  国家  |
+--------+------+--------+
|  苹果  |  4   | 中国 |
|  橙子  |  5   | 中国 |
|   梨   |  6   | 中国 |
|  菠萝  |  7   | 中国 |
+--------+------+--------+

在这个示例中,我们首先导入 PrettyTable 类。然后,创建一个 PrettyTable 对象,并使用 add_rows() 方法将数据逐行添加到表格中。最后,使用 print() 函数打印出整个表格。

PrettyTable 可以自动对齐表格内容,并可以根据需要进行格式化和样式调整。你可以在 PrettyTable 的文档中查看更多关于自定义表格外观和样式的信息,以满足你的需求。

Texttable

要使用 Texttable 库打印以上的表格,你可以按照以下示例代码进行操作:

from texttable import Texttable

headers = ['水果', '价格', '国家']

fruits = [
    ['苹果', 4, '中国'],
    ['橙子', 5, '中国'],
    ['梨', 6, '中国'],
    ['菠萝', 7, '中国'],
]

table = Texttable()
table.set_cols_align(['l', 'r', 'l'])
table.header(headers)
table.add_rows(fruits)

print(table.draw())

运行以上代码,将会输出如下的表格:


+--------+-------+--------+
|  水果  | 价格  |  国家  |
+========+=======+========+
| 苹果   |  4    | 中国 |
+--------+-------+--------+
| 橙子   |  5    | 中国 |
+--------+-------+--------+
| 梨     |  6    | 中国 |
+--------+-------+--------+
| 菠萝   |  7    | 中国 |
+--------+-------+--------+

在这个示例中,我们首先导入 Texttable 类。然后,创建一个 Texttable 对象,并使用 set_cols_align() 方法设置列的对齐方式(‘l’ 表示左对齐,‘r’ 表示右对齐,‘c’ 表示居中对齐)。接下来,使用 header() 方法设置表头,使用 add_rows() 方法逐行添加数据。最后,使用 draw() 方法生成表格的字符串表示,并使用 print() 函数打印出来。

Texttable 提供了一些其他的方法和选项,可以用于自定义表格的样式和格式。你可以查阅 Texttable 的文档以获取更多详细信息,并根据需要进行定制。

其他的库

除了 PrettyTableTexttable,还有其他一些库可以实现类似的表格效果。以下是一些常用的 Python 表格库:

  1. Pandas

Pandas 是一个功能强大的数据处理和分析库,它提供了 DataFrame 数据结构,可以用于创建和展示表格数据。你可以使用 Pandas 提供的方法和函数,对表格进行灵活的操作和定制,包括数据的筛选、排序、分组等。使用 Pandas 可以实现更高级的表格功能,适用于处理大量数据和进行数据分析。

  1. Tabulate

Tabulate 是一个用于将数据以表格形式展示的库。它支持多种输出格式(如纯文本、HTML、Markdown 等),并提供了丰富的表格样式和格式选项。使用 Tabulate,你可以将数据快速转换为漂亮的表格,并具有对齐、排序、边框、颜色等方面的定制能力。

这些库提供了丰富的功能和选项,可以根据你的需求选择最适合的库来创建和展示表格数据。你可以根据具体的使用场景和需求,了解这些库的文档和示例,选择最适合的库来实现你想要的表格效果。

写在最后

在本文中,我们介绍了几种常用的库,包括 PrettyTable 和 Texttable。这些库可以根据数据的需求和个人偏好,以不同的样式和格式打印表格。PrettyTable 简单易用,适合基本的表格需求;Texttable 简洁轻量,适合在终端中显示表格。无论你是需要简单的文本表格还是更复杂的数据分析,这些方法都能满足你的需求。当然了你也可以硬编码完成自己喜欢的结构。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值