有兩個選項
使用標準的字符串格式化功能
你嘗試通過%
創建結果內容正朝着這個方向發展。
但是,由於存在循環(輸出中的行),並且%
和string.format
都不支持循環,所以您必須在代碼中創建此「循環內容」並最終嵌入到結果頁面中。
bigtempl = '''<html>
<head>
</head>
<body>
<center>
<table border="0" cellspacing="15">
{rows}
</table>
</center>
</body>
</html>'''
rowtempl = """
<tr>
<td align="center" style="font-size:1.25em;">
<p class="sansserif"> <b> Number: {number:d} </b> <br>
Letter: {letter} </p>
</td>
</tr>
"""
numbers = [0, 1, 2, 3]
letters = ["A", "B", "C", "D"]
lst = zip(numbers, letters)
rows = [rowtempl.format(number=number, letter=letter) for number, letter in lst]
rows = "".join(rows)
wholepage = bigtempl.format(rows=rows)
print wholepage
採用了先進的模板庫
有許多封裝,能夠基於模板和數據結構生成內容。這些通常允許循環。
我曾經決定繼續使用jinja2
,我對此感到滿意。你的任務在Jinja2中看起來像這樣:
import jinja2
templ = '''<html>
<head>
</head>
<body>
<center>
<table border="0" cellspacing="15">
{% for number, letter in lst %}
<tr>
<td align="center" style="font-size:1.25em;">
<p class="sansserif"> <b> Number: {{number}} </b> <br>
Letter: {{letter}} </p>
</td>
</tr>
{% endfor %}
</table>
</center>
</body>
</html>'''
numbers = [0, 1, 2, 3]
letters = ["A", "B", "C", "D"]
lst = zip(numbers, letters)
template = jinja2.Template(templ)
print template.render(lst=lst)
其他模板解決方案以非常相似的方式做到這一點。
這真是太棒了! – Sweety