如何在文本变量中输出自动生成的 HTML 并返回它?



>我构建了一个函数,基本上可以打印我需要的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文件中,则输出的数据是完全正确的。但我希望它能自我生成。我尝试以这种方式运行它,但显然它不起作用,因为我没有返回任何东西。有什么建议吗?

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(

这里还有更多内容:https://wiki.python.org/moin/Templating

是的,您可以创建一个变量,例如:

html = """<html>
<body> {{var1}}
</body>
</html>"""

这将是您的模板,您可以使用以下命令将变量传递给此模板:

new_html = html.format( var1="hello")

因此,您可以在模板中传递所需的任何类型的变量。

最新更新