python - 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')
解决方案
在形成 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。
推荐阅读
- function - 如何将其变成输入文件的函数?
- swift - 通过实例方法设置时出现 Swift Retain Cycle 问题
- r - R将数字向量转换为逗号分隔字符串
- python - Python telnet 连接关闭
- selenium - Getting org.junit.runner.RunWith is not an annotation type with Cucumber
- ios - 单击标签 Swift/Xcode 中的一些属性文本
- java - javafx边界窗格在左右空间中对齐
- c# - 如何使用 xpath/jsonpath 从 c# 中的 txt 文件中查找特定的 json 元素?
- c# - 将多个子项分配给网格并可视化它们
- mongodb - mongo 文档的原子替换操作