如何使用python创建html表

2024-06-13 01:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个国家的列表,我想把它放在一个html表格中

places = ['Japan','China','North Korea', 'South Korea', 'Vietnam', 'Taiwan', 'Philippines', 'Myanmar']

现在我只有这段代码,它只把<td></td>放在每个国家的开头和结尾。我很难在每读到第三行或每读到一个国家时,把<tr></tr>放进去。事实上,我不知道怎么做哈哈哈(注意,在我的代码中,我只使用print来显示所需的输出,稍后我将使用write)

for x in places:
    print('<td>' + x + '</td>')

输出:

<td>Japan</td>
<td>China</td>
<td>North Korea</td>
<td>South Korea</td>
<td>Vietnam</td>
<td>Taiwan</td>
<td>Philippines</td>
<td>Myanmar</td>

期望输出:

<tr>
<td>Japan</td>
<td>China</td>
<td>North Korea</td>
</tr>

<tr>
<td>South Korea</td>
<td>Vietnam</td>
<td>Taiwan</td>
</tr>

<tr>
<td>Philippines</td>
<td>Myanmar</td>
</tr>

注意:位置列表的数量不是固定的。我的意思是,有时候它可能会变成这样places = ['Japan','China']或者只是places = ['Japan']


Tags: 代码列表国家trtdmyanmarplacessouth
2条回答

可以使用列表切片

places = ['Japan','China','North Korea', 'South Korea', 'Vietnam', 'Taiwan', 'Philippines', 'Myanmar']

for i in range(0, len(places),3):
    row = "<tr>"
    for j in places[i:i+3]:
        row+=f"\n<td>{j}</td>"
    print(row+"\n</tr>")

输出:

<tr>
<td>Japan</td>
<td>China</td>
<td>North Korea</td>
</tr>
<tr>
<td>South Korea</td>
<td>Vietnam</td>
<td>Taiwan</td>
</tr>
<tr>
<td>Philippines</td>
<td>Myanmar</td>
</tr>

您还可以在此处使用jinja2模板引擎

Ex:

from jinja2 import Template


html_template = """{% for p in places %}
<tr>
{% for city in p %}
  <td>{{ city }}</td>
{% endfor %}
</tr>
{% endfor %}"""

places = ['Japan','China','North Korea', 'South Korea', 'Vietnam', 'Taiwan', 'Philippines', 'Myanmar']
places = [places[i: i+3] for i in range(0, len(places), 3)]
template = Template(html_template)
print(template.render(places=places))

输出:

<tr>

  <td>Japan</td>

  <td>China</td>

  <td>North Korea</td>

</tr>

<tr>

  <td>South Korea</td>

  <td>Vietnam</td>

  <td>Taiwan</td>

</tr>

<tr>

  <td>Philippines</td>

  <td>Myanmar</td>

</tr>

相关问题 更多 >