【问题标题】:Python PrettyTable with multiple header/ title具有多个标题/标题的 Python PrettyTable
【发布时间】:2018-12-26 18:55:27
【问题描述】:

我能够创建一个带有标题和表格字段的 python PrettyTable。但是,我想在一个表中创建多个部分,即有多个标题(或 html rowspan/colspan 以合并单元格以创建部分)。 有什么建议吗?

目前,我可以使用以下方法创建表:

table_fields = ['No','Name', 'Age']
from prettytable import PrettyTable
pt = PrettyTable(table_fields)
pt.padding_width = 1
pt.title = 'Customer Info'
pt.add_row(['1','abc','26'])
pt.add_row(['2','xyz','52'])

输出:

+------------------------------+
|    Customer Info             |
+------------------------------+ 
| No | Name      |    Age      |
+------------------------------+
| 1  |  abc      |   26        |
| 2  |  xyz      |   52        |
+------------------------------+

期望的输出:

+------------------------------+
|    Customer Info             |
+------------------------------+ 
| No | Name      |    Age      |
+------------------------------+
|  DEPARTMENT 1                |
+------------------------------+
| 1  |  abc      |   26        |
| 2  |  xyz      |   52        |
+------------------------------+
|  DEPARTMENT 2                |
+------------------------------+
| 1  |  pqr      |   44        |
| 2  |  def      |   31        |
+------------------------------+

寻找一种在表中添加部门 1 和部门 2 行的方法。

【问题讨论】:

    标签: python prettytable


    【解决方案1】:

    这是我能够获得所需输出的最接近的结果(每次将新部门的人员添加到表中时,使用一行作为部门编号): 注意:我无法找到更改单元格列跨度的方法,因此我必须添加空格以填充预期的单元格数量,否则无法添加行。

    +---------------------------+
    |       Customer Info       |
    +--------------+------+-----+
    |      No      | Name | Age |
    +--------------+------+-----+
    | DEPARTMENT 1 |      |     |
    |      1       | abc  |  41 |
    |      2       | def  |  29 |
    | DEPARTMENT 2 |      |     |
    |      1       | pqr  |  21 |
    |      2       | xyz  |  37 |
    +--------------+------+-----+
    

    使用以下代码:

    from prettytable import PrettyTable
    
    departments = {
        "1": {
            "abc": {
                "age": 41
            },
            "def": {
                "age": 29
            }
        },
        "2": {
            "pqr": {
                "age": 21
            },
            "xyz": {
                "age": 37
            }
        }
    }
    
    table_fields = ['No', 'Name', 'Age']
    pt = PrettyTable(table_fields)
    pt.padding_width = 1
    pt.title = 'Customer Info'
    person_no = 1
    for department, people in departments.items():
        pt.add_row(["DEPARTMENT {}".format(department), "", ""])
        for name, person in people.items():
            pt.add_row([person_no, name, person["age"]])
            person_no += 1
        person_no = 1
    print(pt)
    

    我希望这足以满足您的需求,如果您或其他人知道如何为单元格指定列跨度,我很想知道!

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 2018-05-06
      • 2013-06-22
      • 2017-01-10
      • 1970-01-01
      • 2014-08-08
      • 2013-12-16
      • 2016-08-04
      • 2014-04-16
      相关资源
      最近更新 更多