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

发布于 2021-02-02 23:23:34

我是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循环,并且尝试将其打印为字符串。

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

关注者
0
被浏览
147
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    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))
    


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    有一些轻便有用的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,你可以控制水平/垂直对齐,边框样式和数据类型。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看