I'd like to create a function that can take in an arbitrary number of lists that would be turned into HTML tables that would be separated by breaks for the purposes of sending an email with multiple tables.
Inputs:
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']]
Desired Output
<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>
my attempt:
import HTML
def HtmlTablesfromLists(*args):
[HTML.table(arg) + "</br> for arg in args]
Result:
['<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>']
Bonus Question:
How would I ensure that this is passed into the following function correctly
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)
You're almost there, join
the elements of your current resulting list with ''
makes your desired output string:
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>