首页 > 解决方案 > Python排序html表格

问题描述

我正在遍历服务器列表并连接 OpenSSL,以检索 SSL 证书,并获取服务器名称、证书到期日期,并计算证书到期前的天数。然后我正在用数据构建一个 html 表。这些列是主机、主机名、到期日期和剩余天数。按“剩余天数”列对表格进行排序的最佳方法是什么?

# Update the hosts entry
    ssl_results[str(ip)][0] = host
    ssl_results[str(ip)][1] = server_name
    ssl_results[str(ip)][2] = exp_date
    ssl_results[str(ip)][3] = days_to_expire

    # Loop through the ssl_results entries and generate a email + results file
    try:

        # variable to hold html for email
        SSLCertificates = """<html>
                            <head>
                              <style>
                                    table{width: 1024px;}

                                    table, th, td {
                                        border: 1px solid black;
                                        border-collapse: collapse;
                                    }

                                    th, td {
                                        padding: 5px;
                                        text-align: left;
                                    }

                                    ul:before{
                                      content:attr(data-header);
                                      font-size:120%;
                                      font-weight:bold;
                                      margin-left:-15px;
                                    }
                                </style>
                              </head>
                            <body>
                              <p><h2>Blah, </h2>
                              <h3>SSL Expiration Summary:</h3>
                              <span style="color:red;"><b>Blah Blah Blah.<b></span><br><br>
                              <table id=\"exp_ssls\"><tr><th>Host</th><th>Hostname</th><th>Expiration Date</th><th>Remaining Days</th></tr>
                          """

        for entries in ssl_results:
            SSLCertificates += "<tr><td>" + str(entries) + "</td><td>" + str(ssl_results[entries][1]) + "</td><td>" + str(
                ssl_results[entries][2]) + "</td><td>" + str(ssl_results[entries][3]) + "</td></tr>"

        SSLCertificates += """</body>
                    </html>"""

        f = open('SSLCertificates.html', 'w')
        f.write(SSLCertificates)
        f.close()
        filename = 'SSLCertificates.html'
        attachment = open(filename, 'rb')

标签: pythonsortinghtml-table

解决方案


在形成 html 标签之前对字典进行排序。然后遍历dict并使用html标签打印它。在迭代之前使用 sorted() 对你的 dict 进行排序。

import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))

sorted_x 将是按每个元组中的第二个元素排序的元组列表。dict(sorted_x) == x。


推荐阅读