2014-03-05 65 views
0

我想创建一个函数,它可以接受任意数量的列表,这些列表可以转换为HTML表格,这些HTML表格可以用多个表格来发送邮件。如何使用* args从列表创建多个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

就快,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>