使用python中的表格打印多个HTML表格

时间:2018-08-20 11:55:55

标签: python smtplib

我想使用制表包来生成两个HTML表,但是我只能生成一个表并发送邮件。

是否可以在通过smtplib和电子邮件发送的邮件中放置多个html表?每当我使用attach()做多件事时,它只会添加第一件事。

text = """
Hello, Friend.

Here is your data:

{table}

Regards,

Me
"""

html = """
<html>
<body>
    <p>Hello, Friend.</p>
    <p>Here is your data:</p>
    {table}
    <p>Regards,</p>
    <p>Me</p>
</body>
</html>
"""

with open('input.csv') as input_file:
    reader = csv.reader(input_file)
    data = list(reader)

    text = text.format(table=tabulate(data, headers="firstrow", tablefmt="grid"))
    html = html.format(table=tabulate(data, headers="firstrow", tablefmt="html"))

    message = MIMEMultipart(
       "alternative", None, [MIMEText(text), MIMEText(html,'html')]
    )

1 个答案:

答案 0 :(得分:1)

是的。首先,您必须更改要替换为表格的字段数:

text = """ [...] {table1} {table2} [...] """

然后,您必须传递内容以将其格式化为kwargs:

text = text.format(table1=tabulate(data, headers="firstrow", tablefmt="grid"),
                   table2=your_new_table_tabulation)

您可以为html做

Python中的字符串格式不是附件,而是将内容替换为预格式化的字段。您可以根据需要替换任意多个字段,并输入所需的名称和所需的内容。然后,当您发送电子邮件时,您将发送一个普通的HTML文件,并将表格呈现为HTML /文本

我建议您签出https://docs.python.org/3/library/string.html#string.Formatter.format

适用于Python 3.7版。您几乎可以在线获得所有Python版本。