Python - 使用" for"循环输出html内容

时间:2016-12-15 06:02:22

标签: python html

我正在用Python输出HTML文件。在HTML内部,我有一个表格,显示Python文件中字典中的键和值,我认为在这种情况下我必须使用循环来显示表格数据。但我对使用python输出html内容感到困惑。我尝试过使用< %%>这应该允许在HTML中使用Python代码,但它没有工作..

 message = """
        <html>
        <body>
        <h1>Counting words</h1>
        <table border = 1>
        <tr>
        <th>Words</th>
        <th>Count</th>
        </tr>
        <% for key, value in wordDict.items(): %>
            <% if value >= 10: %>
                <tr>
                <td><% print(key) %></td>
                <td><% print(value) %></td>
                </tr>
                <% end %>
            <% end %>
        </table>
        </body>
        </html>"""
        f.write(message)
        f.close()

2 个答案:

答案 0 :(得分:1)

您可以使用字符串格式将动态值插入字符串:

message = """
            <html>
            <body>
            <h1>Counting words</h1>
            <table border = 1>
            <tr>
            <th>Words</th>
            <th>Count</th>
            </tr>
            {0}
            </table>
            </body>
            </html>"""

wordDict = {1: 'a', 2: 'b', 3: 'c'}

insert = []
for k, v in wordDict.items():
    insert.append("<tr><td>{0}</td><td>{1}</td></tr>".format(k, v))
print(message.format(''.join(insert)))

输出:

    <html>
    <body>
    <h1>Counting words</h1>
    <table border = 1>
    <tr>
    <th>Words</th>
    <th>Count</th>
    </tr>
    <tr><td>1</td><td>a</td></tr><tr><td>2</td><td>b</td></tr><tr><td>3</td><td>c</td></tr>
    </table>
    </body>
    </html>

答案 1 :(得分:0)

您遇到语法错误。使用Joomla时,您必须拥有如下所示的精加工标签:&lt;%endfor%&gt;和&lt;%endif%&gt;而且我不确定在for循环之后的,试试这个,如果它不工作,那就玩吧

message = """
    <html>
    <body>
    <h1>Counting words</h1>
    <table border = 1>
    <tr>
    <th>Words</th>
    <th>Count</th>
    </tr>
    <% for key, value in wordDict.items() %>
        <% if value >= 10 %>
            <tr>
            <td><% print(key) %></td>
            <td><% print(value) %></td>
            </tr>
         <% endif %>
    <% endfor %>
    </table>
    </body>
    </html>"""
    f.write(message)
    f.close()