首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将包含OrderedDicts的列表转换为HTML表?

如何将包含OrderedDicts的列表转换为HTML表?
EN

Stack Overflow用户
提问于 2019-05-01 17:16:32
回答 2查看 302关注 0票数 0

我有一个包含几个OrderedDict对象的列表,如下所示:

代码语言:javascript
复制
[OrderedDict([('Name', 'Soytra'), ('Class', 'First'), ('Number', '23768'), ('Place', 'NY'), ('Place1', 'LA'), ('Grade', 16.6038)]), OrderedDict([('Name', 'Reuhyta'), ('Class', 'First'), ('Number', '23769'), ('Place', 'NY'), ('Place1', 'LA'), ('Grade', 23.56789)])] 

我想将该列表转换为以下HTML表,如下所示:

INFO:我已经用过熊猫了,想看看其他的解决方案

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-01 17:34:09

你甚至不需要导入任何东西!这是一个非常简单的任务,您可以使用列表和字符串来获得相同的结果。

您所要做的就是将OrderedDict对象转换为python列表:

代码语言:javascript
复制
keys, rows = [], []
for sub_dict in ordered_items:
  row = []
  for key in sub_dict:
    if key not in keys:
      keys.append(key)
    row.append(sub_dict[key])
  rows.append(row)

然后将这些列表转换为HTML表格字符串:

代码语言:javascript
复制
thead = "<thead><tr>{}</tr></thead>".format("".join(map(lambda key: "<th>{}</th>".format(key), keys)))
tbody = "<tbody>"
for row in rows:
  tbody += "<tr>{}</tr>".format("".join(map(lambda value: "<td>{}</td>".format(value), row)))
tbody += "</tbody>"

然后,在打印连接的字符串时,如下所示:

代码语言:javascript
复制
print("<table>" + thead + tbody + "</table>")

您应该会得到以下结果:

代码语言:javascript
复制
<table><thead><tr><th>Name</th><th>Class</th><th>Number</th><th>Place</th><th>Place1</th><th>Grade</th></tr></thead><tbody><tr><td>Soytra</td><td>First</td><td>23768</td><td>NY</td><td>LA</td><td>16.6038</td></tr><tr><td>Reuhyta</td><td>First</td><td>23769</td><td>NY</td><td>LA</td><td>23.56789</td></tr></tbody></table>

它应该输出以下HTML:

代码语言:javascript
复制
table, table * {
  border-collapse: collapse;
}

th, td {
  padding: 7px;
  text-align: left;
  border: 1px solid #EEE;
}
代码语言:javascript
复制
<table><thead><tr><th>Name</th><th>Class</th><th>Number</th><th>Place</th><th>Place1</th><th>Grade</th></tr></thead><tbody><tr><td>Soytra</td><td>First</td><td>23768</td><td>NY</td><td>LA</td><td>16.6038</td></tr><tr><td>Reuhyta</td><td>First</td><td>23769</td><td>NY</td><td>LA</td><td>23.56789</td></tr></tbody></table>

祝好运。

票数 4
EN

Stack Overflow用户

发布于 2019-05-01 17:42:05

您可以创建自己的函数来创建HTML表:

代码语言:javascript
复制
from collections import OrderedDict
inDict = [OrderedDict([('Name', 'Soytra'), ('Class', 'First'), ('Number', '23768'), ('Place', 'NY'), ('Place1', 'LA'), ('Grade', 16.6038)]), OrderedDict([('Name', 'Reuhyta'), ('Class', 'First'), ('Number', '23769'), ('Place', 'NY'), ('Place1', 'LA'), ('Grade', 23.56789)])]

def makeHtmlTable(inDict):
    htmlOutput = "<table>"
    headers = [elem for elem in list(inDict[0])]
    htmlOutput += "<tr>" + "".join(["<th>" + header + "</th>" for header in headers]) + "</tr>"
    for elem in inDict:
        htmlOutput += "<tr>" + "".join(["<td>" + str(value) + "</td>" for key, value in elem.items()]) + "</tr>"
    htmlOutput += "</table>"
    return htmlOutput

print(makeHtmlTable(inDict))

输出:

代码语言:javascript
复制
<table><tr><th>Name</th><th>Class</th><th>Number</th><th>Place</th><th>Place1</th><th>Grade</th></tr><tr><td>Soytra</td><td>First</td><td>23768</td><td>NY</td><td>LA</td><td>16.6038</td></tr><tr><td>Reuhyta</td><td>First</td><td>23769</td><td>NY</td><td>LA</td><td>23.56789</td></tr></table>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55934025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档