我已经构建了一个基本打印我需要的html的函数,以便发送带有报告和数据信息的格式化电子邮件。
def create_html_security_ldw(df1, df2):
date_time = time.strftime('%b %d %Y')
print('<html><body>')
print('<img src=\"xyz.png\" style=\"display: block; margin: 40px auto; width: 200px; height: auto;\">')
print('<h1 style=\"text-align: center;\">Security Risk LDW - ' + date_time + '</h1>')
print('<h2 style=\"text-align: center;\">Top Unsettled by Security</h2>')
print('<div style=\"position: relative; margin: auto; width: 60%;\"><table id=\"t01\"><tr><th>Security</th><th>Ticker</th><th>Yesterday</th><th>Currency</th></tr>')
for index, row in df1.iterrows():
print('<tr><td><b>' + row['Security'] + '</b></td>')
print('<td>' + row['Ticker'] + '</td>')
print('<td>' + str(row['*Yesterday*']) + '</td>')
print('<td>' + row['Currency'] + '</td></tr>')
print('</table><br><br>')
print('<h2 style=\"text-align: center;\">Top Unsettled by Currency</h2>')
print('<div style=\"position: relative; margin: auto; width: 60%;\"><table id=\"t01\"><tr><th>Currency</th><th>Yesterday</th><th>Percentage</th></tr>')
for index, row in df2.iterrows():
print('<tr><td><b>' + row['Currency'] + '</b></td>')
print('<td>' + str(row['*Yesterday*']) + '</td>')
print('<td>' + str(row['Percentage']) + '</td></tr>')
print('</table>')
print('</div><br><br><br></body></html>')
有没有可能的方法我可以把它存储在一个变量中,然后返回一个不同的函数我打电话说:
send_outlook_email(create_html_security_ldw(big_security, sums_sort))
如果我将其复制并粘贴到.html
文件中,则输出的数据完全正确。但我希望它能够自我生成。我尝试以这种方式运行它,但显然它不会起作用,因为我没有返回任何东西。有什么建议吗?
答案 0 :(得分:1)
Python中有各种各样的字符串处理工具,所以是的,你绝对可以做到这一点。
显而易见,但可能是单调乏味的方式,只需用连接替换所有打印语句:
s = '<html><body>'
s += '<img src=\"xyz.png\" style=\"display: block; margin: 40px auto; width: 200px; height: auto;\">\n'
for index in ["Hello", "there", "buddy"]:
s += '<tr><td><b>' + index + '</b></td>\n'
return s
除此之外,Python还具有各种模板和格式可能性,可以将变量传递给要编码的字符串。一个例子:
from string import Template
t = Template("<tr><td><b>$word</b></td>\n")
for index in ["Hello", "there", "buddy"]:
s += t.substitute(word=index)
print(s)
更多信息:https://docs.python.org/2.4/lib/node109.html
除此之外,还有用于模板化HTML的完整软件包,例如Jinja(http://jinja.pocoo.org)
答案 1 :(得分:0)
是的,您可以创建一个变量,如:
html = """<html>
<body> {{var1}}
</body>
</html>"""
这将是您的模板,您可以使用以下命令将变量传递给此模板:
new_html = html.format( var1="hello")
因此,您可以在模板中传递任何类型的变量。