将python嵌套列表转换为HTML表

时间:2018-04-18 00:44:53

标签: python html python-3.x nested-lists

我想将Python中的行列表转换为HTML表格,最终发送到电子邮件正文中。让我们说我的行列表存储为变量req_list(例如,表示来自.csv文件的导入数据),如下所示:

> [['Email', 'Name', 'Name ID', 'Policy ID',
> 'Policy Number', 'Policy Effective Date'],
>  ['me@gmail.com','My Name', 
  '5700023153486', '57000255465455','C4545647216', '1/1/2017']]

请忽略上述显示不正确的>格式。

您可能猜到列表中的第一行包含列标题。我想从这个列表中生成一个HTML表。假设这个例子可能有要添加到表中的任意数量的附加行,但是如果有0则不需要教我循环处理这个或错误处理。

如何将其更改为格式相对较好的HTML表格? (例如黑色和白色,也许有网格线)。我不太了解HTML,并尝试了以下内容:

for thing in req_list:
    for cell in thing:
        req_tbl = req_tbl + "<tr><td>" + str(cell)

基本上每个&#34;细胞&#34;在我的电子邮件收件箱中读取时,在一行中一个接一个地打印出来的列表(代码在电子邮件中将此req_table变量发送给我自己)

Email
Name
Name ID
Policy ID

等等。

如何将其格式化为正确的HTML表格?此外,有没有办法可以阅读&#34; html&#34; python中req_table中包含的文本,以便查看我的工作?我已经使用urllib来打开页面/文件,但似乎无法将其传递给变量。

2 个答案:

答案 0 :(得分:3)

您可以使用Pandas,只需两行代码:

import pandas as pd

df = pd.DataFrame(req_list[1:], columns=req_list[0])
df.to_html()

'<table border="1" class="dataframe">\n  <thead>\n    <tr style="text-align: right;">\n      <th></th>\n      <th>Email</th>\n      <th>Name</th>\n      <th>Name ID</th>\n      <th>Policy ID</th>\n      <th>Policy Number</th>\n      <th>Policy Effective Date</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>me@gmail.com</td>\n      <td>My Name</td>\n      <td>5700023153486</td>\n      <td>57000255465455</td>\n      <td>C4545647216</td>\n      <td>1/1/2017</td>\n    </tr>\n  </tbody>\n</table>'

您还可以使用以下方法将html表读入DataFrame:

df = pd.read_html(req_table)

答案 1 :(得分:1)

您可以使用字符串格式:

d = [['Email', 'Name', 'Name ID', 'Policy ID', 'Policy Number', 'Policy Effective Date'], ['me@gmail.com','My Name', '5700023153486', '57000255465455','C4545647216', '1/1/2017']]
final_table = "<table>\n<tr>{}</tr>\n{}</table>".format('\n'.join('<th>{}</th>'.format(i) for i in d[0]), '<tr>{}</tr>'.format('\n'.join('\n'.join(['<td>{}</td>'.format(b) for b in i]) for i in d[1:])))

将HTML存储在文件中并在浏览器中打开时,输出为:

enter image description here