Переменная Python в HTML-письме в Python

Как вставить переменную в html-письмо, которое я отправляю с python? Переменную я пытаюсь отправить это code. Ниже то, что у меня есть до сих пор.

text = "We Says Thanks!"
html = """
<html>
  <head></head>
  <body>
    <p>Thank you for being a loyal customer.<br>
       Here is your unique code to unlock exclusive content:<br>
       <br><br><h1><% print code %></h1><br>
       <img src="http://domain.com/footer.jpg">
    </p>
  </body>
</html>
"""

3 ответов


использовать "formatstring".format:

code = "We Says Thanks!"
html = """\
<html>
  <head></head>
  <body>
    <p>Thank you for being a loyal customer.<br>
       Here is your unique code to unlock exclusive content:<br>
       <br><br><h1>{code}</h1><br>
       <img src="http://domain.com/footer.jpg">
    </p>
  </body>
</html>
""".format(code=code)

Если вы обнаружите, что подставляете большое количество переменных, вы можете использовать

.format(**locals())

другой способ-использовать Шаблоны:

>>> from string import Template
>>> html = '''\
<html>
  <head></head>
  <body>
    <p>Thank you for being a loyal customer.<br>
       Here is your unique code to unlock exclusive content:<br>
       <br><br><h1>$code</h1><br>
       <img src="http://domain.com/footer.jpg">
    </p>
  </body>
</html>
'''
>>> s = Template(html).safe_substitute(code="We Says Thanks!")
>>> print(s)
<html>
  <head></head>
  <body>
    <p>Thank you for being a loyal customer.<br>
       Here is your unique code to unlock exclusive content:<br>
       <br><br><h1>We Says Thanks!</h1><br>
       <img src="http://domain.com/footer.jpg">
    </p>
  </body>
</html>

обратите внимание, что я использовал safe_substitute, а не substitute, как будто есть заполнитель, которого нет в предоставленном словаре,substitute поднять ValueError: Invalid placeholder in string. Та же проблема с string formatting.


использовать манипуляции со строками pythons: http://docs.python.org/2/library/stdtypes.html#string-formatting

обычно оператор % используется для ввода переменной в строку, %i для целых чисел, %s для строк и %f для поплавков, Примечание: существует также другой тип форматирования (.формат), который также описан в приведенной выше ссылке, что позволяет вам пройти в дикт или список немного более элегантно, чем то, что я показываю ниже, это может быть то, что вы должны пойти в долгосрочной перспективе, как оператор % запутывается, если у вас есть 100 переменных, которые вы хотите поместить в строку, хотя использование dicts (мой последний пример) отчасти отрицает это.

code_str = "super duper heading"
html = "<h1>%s</h1>" % code_str
# <h1>super duper heading</h1>
code_nr = 42
html = "<h1>%i</h1>" % code_nr
# <h1>42</h1>

html = "<h1>%s %i</h1>" % (code_str, code_nr)
# <h1>super duper heading 42</h1>

html = "%(my_str)s %(my_nr)d" %  {"my_str": code_str, "my_nr": code_nr}
# <h1>super duper heading 42</h1>

это очень простой и работает только с примитивными типами, если вы хотите быть в состоянии хранить предсказывает, списки и возможных объектов, я предлагаю вам использовать cobvert их jsons http://docs.python.org/2/library/json.html и https://stackoverflow.com/questions/4759634/python-json-tutorial Хорошие источники вдохновения

надеюсь, что это помогает