Я хотел бы создать функцию, которая может принимать произвольное количество списков, которые будут превращены в таблицы 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)
Вы почти там, 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>