如何使用* args从列表中创建多个html表?

时间:2014-03-05 02:36:31

标签: python html list smtp sublist

我想创建一个可以接收任意数量的列表的函数,这些列表将被转换为HTML表格,这些表格将被中断分隔,以便发送包含多个表格的电子邮件。

输入:

 lsta = [['a','b','c'],['1','2','3'],['d','e','f']]
 lstb = [['a','b','c'],['1','2','3'],['d','e','f']]
 lstc = [['a','b','c'],['1','2','3'],['d','e','f']]

期望输出

 <TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">
 <TR>
<TD>a</TD>
<TD>b</TD>
<TD>c</TD>
</TR>
<TR>
<TD>1</TD>
<TD>2</TD>


 <TD>3</TD>
 </TR>
 <TR>
  <TD>d</TD>
  <TD>e</TD>
  <TD>f</TD>
 </TR>
</TABLE>

</br>

<TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">
 <TR>
  <TD>a</TD>
  <TD>b</TD>
  <TD>c</TD>
 </TR>
 <TR>
  <TD>1</TD>
  <TD>2</TD>
  <TD>3</TD>
 </TR>
 <TR>
  <TD>d</TD>
  <TD>e</TD>
  <TD>f</TD>
 </TR>
</TABLE>

</br>

<TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">
 <TR>
  <TD>a</TD>
  <TD>b</TD>
  <TD>c</TD>
 </TR>
 <TR>
  <TD>1</TD>
  <TD>2</TD>
  <TD>3</TD>
 </TR>
 <TR>
  <TD>d</TD>
  <TD>e</TD>
  <TD>f</TD>
 </TR>
</TABLE>

我的尝试:

 import HTML
def HtmlTablesfromLists(*args):
 [HTML.table(arg) + "</br> for arg in args]

结果:

['<TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">\n <TR>\n  <TD>a</TD>\n  <TD>b</TD>\n  <TD>c</TD>\n </TR>\n <TR>\n  <TD>1</TD>\n  <TD>2</TD>\n  <TD>3</TD>\n </TR>\n <TR>\n  <TD>d</TD>\n  <TD>e</TD>\n  <TD>f</TD>\n </TR>\n</TABLE></br>', '<TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">\n <TR>\n  <TD>a</TD>\n  <TD>b</TD>\n  <TD>c</TD>\n </TR>\n <TR>\n  <TD>1</TD>\n  <TD>2</TD>\n  <TD>3</TD>\n </TR>\n <TR>\n  <TD>d</TD>\n  <TD>e</TD>\n  <TD>f</TD>\n </TR>\n</TABLE></br>', '<TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">\n <TR>\n  <TD>a</TD>\n  <TD>b</TD>\n  <TD>c</TD>\n </TR>\n <TR>\n  <TD>1</TD>\n  <TD>2</TD>\n  <TD>3</TD>\n </TR>\n <TR>\n  <TD>d</TD>\n  <TD>e</TD>\n  <TD>f</TD>\n </TR>\n</TABLE></br>']

奖金问题:

我如何确保将其正确传递到以下函数

def GmailSend(self,email_subject,body_of_email):

    session = smtplib.SMTP('smtp.gmail.com', 587)
    session.ehlo()
    session.starttls()
    session.login(GMAIL_USERNAME, GMAIL_PASSWORD)
    headers = "\r\n".join(["from: " + GMAIL_USERNAME,
        "subject: " + email_subject,
        "to: " + recipient,
        "mime-version: 1.0",
        "content-type: text/html"])
    content = headers + "\r\n\r\n" + body_of_email
    session.sendmail(GMAIL_USERNAME, recipient, content)

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,join当前结果列表''的元素构成了你想要的输出字符串:

In [16]: lst = ['<TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">\n <TR>\n  <TD>a</TD>\n  <TD>b</TD>\n  <TD>c</TD>\n </TR>\n <TR>\n  <TD>1</TD>\n  <TD>2</TD>\n  <TD>3</TD>\n </TR>\n <TR>\n  <TD>d</TD>\n  <TD>e</TD>\n  <TD>f</TD>\n </TR>\n</TABLE></br>', '<TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">\n <TR>\n  <TD>a</TD>\n  <TD>b</TD>\n  <TD>c</TD>\n </TR>\n <TR>\n  <TD>1</TD>\n  <TD>2</TD>\n  <TD>3</TD>\n </TR>\n <TR>\n  <TD>d</TD>\n  <TD>e</TD>\n  <TD>f</TD>\n </TR>\n</TABLE></br>', '<TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">\n <TR>\n  <TD>a</TD>\n  <TD>b</TD>\n  <TD>c</TD>\n </TR>\n <TR>\n  <TD>1</TD>\n  <TD>2</TD>\n  <TD>3</TD>\n </TR>\n <TR>\n  <TD>d</TD>\n  <TD>e</TD>\n  <TD>f</TD>\n </TR>\n</TABLE></br>']

In [17]: print ''.join(lst)
<TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">
 <TR>
  <TD>a</TD>
  <TD>b</TD>
  <TD>c</TD>
 </TR>
 <TR>
  <TD>1</TD>
  <TD>2</TD>
  <TD>3</TD>
 </TR>
 ....
</TABLE></br>