📜  使用 python 打印格式化表格(1)

📅  最后修改于: 2023-12-03 14:49:45.672000             🧑  作者: Mango

使用 Python 打印格式化表格

在编程中,打印格式化表格是一项比较常见的任务。Python提供了多种方式和库来实现这个任务。下面介绍几种常用的方法。

1. 使用字符串拼接实现表格

使用字符串拼接的方式,将表格的每一行用'|'分隔,使用字符串的rjust()方法来控制每个单元格的宽度和对齐方式。

# 定义表头和表格内容
header = ['Name', 'Age', 'City']
rows = [['Alice', '25', 'New York'],
        ['Bob', '30', 'Los Angeles'],
        ['Charlie', '35', 'Chicago']]

# 计算每一列的最大宽度
widths = [max(len(str(row[i])) for row in rows + [header]) for i in range(len(header))]

# 打印表头
header_row = ' | '.join(header[i].rjust(widths[i]) for i in range(len(header)))
print(header_row)

# 打印分隔线
separator = '-+-'.join('-' * width for width in widths)
print(separator)

# 打印表格内容
for row in rows:
  row_str = ' | '.join(str(row[i]).rjust(widths[i]) for i in range(len(row)))
  print(row_str)

该代码的输出结果如下所示:

  Name   | Age |    City    
--------+-+-----------
 Alice  | 25  |   New York
   Bob  | 30  | Los Angeles
Charlie | 35  |    Chicago
2. 使用标准库中的textwrap和tabulate库实现表格

使用textwrap和tabulate库可以快速实现格式化的表格输出。textwrap库可以将字符串按指定宽度进行自动换行,而tabulate库可以将二维数据转换为表格的形式。

在使用tabulate库之前,需要先使用textwrap库对表格内容进行自动换行,保证表格的每个单元格不会出现无法显示的内容。

import textwrap
from tabulate import tabulate

# 定义表头和表格内容
header = ['Name', 'Age', 'City']
rows = [['Alice', '25', 'New York'],
        ['Bob', '30', 'Los Angeles'],
        ['Charlie', '35', 'Chicago']]

# 将表格内容进行自动换行
rows_wrap = [[textwrap.fill(str(cell), width=20) for cell in row] for row in rows]

# 将自动换行后的数据转换为表格
table = tabulate(rows_wrap, headers=header, tablefmt='pipe')
print(table)

该代码的输出结果如下所示:

| Name    | Age | City              |
|:--------|:---:|:-----------------|
| Alice   |  25 | New York          |
| Bob     |  30 | Los Angeles       |
| Charlie |  35 | Chicago           |
3. 使用PrettyTable库实现表格

PrettyTable是一个强大的Python库,可以将任何数据格式化为可读性更强的表格形式。它支持单元格合并、排序、颜色输出等高级功能。

from prettytable import PrettyTable

# 定义表头和表格内容
header = ['Name', 'Age', 'City']
rows = [['Alice', '25', 'New York'],
        ['Bob', '30', 'Los Angeles'],
        ['Charlie', '35', 'Chicago']]

# 创建PrettyTable对象并添加表头
table = PrettyTable(header)

# 添加表格内容
for row in rows:
  table.add_row(row)

print(table)

该代码的输出结果如下所示:

+---------+-----+-------------+
|   Name  | Age |     City    |
+---------+-----+-------------+
|  Alice  |  25 |   New York  |
|    Bob  |  30 | Los Angeles|
| Charlie |  35 |   Chicago   |
+---------+-----+-------------+

以上就是使用Python打印格式化表格的几种常用方法,可以根据实际情况选择适合自己的方式进行表格输出。