我想将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来打开页面/文件,但似乎无法将其传递给变量。
答案 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存储在文件中并在浏览器中打开时,输出为: