2017-08-01 5 views
0

レポートとデータの情報を含む書式設定された電子メールを送信するために必要な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ファイルに貼り付けると完全に正しいです。しかし、私はそれが自己生成したい。私はこの方法で実行しようとしましたが、明らかに、私は何も戻っていないので動作しません。助言がありますか?

+0

あなたの質問は何ですか?それを印刷の代わりに変数に追加したい場合は、それを行います。 –

+0

なぜあなたはそれをすべて変数に入れて始めませんか? 変数に。=?を付け加えることができます。 – Lexib0y

+0

はい、問題はfor文に基づいて生成されています...どうすればそのような変数を変数に設定できますか? – sgerbhctim

答えて

1

文字列処理ツールはすべてPythonで用意されていますので、間違いなくこれを行うことができます。

明らかに、しかし可能退屈な方法、それだけの連結で、すべてのprint文を置き換えるために: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 

形成される。一つの例:ここ

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://wiki.python.org/moin/Templating

:それを超えて https://docs.python.org/2.4/lib/node109.html

、こうした神社としてHTMLをテンプレート化のために作られた本格的なパッケージ(http://jinja.pocoo.org

、よりここにたくさんあります

0

はい、あなたのような変数を作成することができます。これはあなたのテンプレートとなり、あなたが使用してこのテンプレートに変数を渡すことができ

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

を:だからあなたは、変数のいずれかの種類を渡すことができ

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

をあなたはテンプレートにしたい。

関連する問題