小编典典

Python-将列表打印为表格数据

python

我是Python的新手,现在正努力为打印输出很好地格式化数据。

我有一个用于两个标题的列表,以及一个应该作为表内容的矩阵。像这样:

teams_list = ["Man Utd", "Man City", "T Hotspur"]
data = np.array([[1, 2, 1],
                 [0, 1, 0],
                 [2, 4, 2]])

请注意,标题名称不一定是相同的长度。数据条目都是整数。

现在,我想以表格格式表示此内容,如下所示:

            Man Utd   Man City   T Hotspur
  Man Utd         1          0           0
 Man City         1          1           0
T Hotspur         0          1           2

我有一个预感,为此必须有一个数据结构,但是我找不到它。我尝试使用字典并格式化打印,我尝试了使用缩进的for循环,并且尝试将其打印为字符串。

我确信必须有一种非常简单的方法来执行此操作,但是由于缺乏经验,我可能会错过它。


阅读 1720

收藏
2020-02-08

共2个答案

小编典典

Python 2.7的一些特殊代码:

row_format ="{:>15}" * (len(teams_list) + 1)
print(row_format.format("", *teams_list))
for team, row in zip(teams_list, data):
    print(row_format.format(team, *row))
2020-02-08
小编典典

有一些轻便有用的python软件包可用于此目的:

1.制表:https : //pypi.python.org/pypi/tabulate

from tabulate import tabulate
print(tabulate([['Alice', 24], ['Bob', 19]], headers=['Name', 'Age']))
Name      Age
------  -----
Alice      24
Bob        19

制表具有许多选项来指定标题和表格式。

print(tabulate([['Alice', 24], ['Bob', 19]], headers=['Name', 'Age'], tablefmt='orgtbl'))
| Name   |   Age |
|--------+-------|
| Alice  |    24 |
| Bob    |    19 |
  1. **PrettyTable**:https://pypi.python.org/pypi/PrettyTable
from prettytable import PrettyTable
t = PrettyTable(['Name', 'Age'])
t.add_row(['Alice', 24])
t.add_row(['Bob', 19])
print(t)
+-------+-----+
|  Name | Age |
+-------+-----+
| Alice |  24 |
|  Bob  |  19 |
+-------+-----+

PrettyTable具有从csv,html,sql数据库读取数据的选项。你还可以选择数据子集,对表进行排序和更改表样式。

  1. texttable:https : //pypi.python.org/pypi/texttable
from texttable import Texttable
t = Texttable()
t.add_rows([['Name', 'Age'], ['Alice', 24], ['Bob', 19]])
print(t.draw())
+-------+-----+
| Name  | Age |
+=======+=====+
| Alice | 24  |
+-------+-----+
| Bob   | 19  |
+-------+-----+

使用texttable,你可以控制水平/垂直对齐,边框样式和数据类型。

  1. termtables:https : //github.com/nschloe/termtables
import termtables as tt

string = tt.to_string(
    [["Alice", 24], ["Bob", 19]],
    header=["Name", "Age"],
    style=tt.styles.ascii_thin_double,
    # alignment="ll",
    # padding=(0, 1),
)
print(string)
+-------+-----+
| Name  | Age |
+=======+=====+
| Alice | 24  |
+-------+-----+
| Bob   | 19  |
+-------+-----+

使用texttable,你可以控制水平/垂直对齐,边框样式和数据类型。

2020-02-08