【问题标题】:Python Dictionary convert to HTML in flaskPython 字典在烧瓶中转换为 HTML
【发布时间】:2016-08-25 15:04:18
【问题描述】:

我有一个 Python 字典,里面有一个字典列表。我正在尝试将其转换为可以提供给 Flask render_template 的 HTML 表格

我的字典格式是:

{'sentiment_analysis_result': [{'article_title': u'These Digital Locks Help Keep Tabs on Tenants', 'score': u'0.139613', 'type': u'positive'}, {'article_title': u'You Can Get a $50 Phone From Amazon, If You Don\u2019t Mind the Ads', 'score': u'0.239663', 'type': u'positive'}]}

我希望键是标题,值是值。任何帮助将不胜感激!

在尝试@EliasMP 的回答后,表格的格式是:

【问题讨论】:

  • 只需将字典从控制器传递到模板并循环两次。第一个用于恢复字典的每个元素(分别为键和值),第二个用于恢复每个列表的每个元素(之前恢复的值),使用 html 绘制它们(表格标签,div 格式化为表格将是正确的方法, 表的标签已过时)。

标签: python html dictionary flask


【解决方案1】:

只需将字典从控制器传递到模板并循环两次。第一个用于恢复字典的每个元素(分别为键和值),第二个用于恢复每个列表的每个元素(之前恢复的值),使用 html 绘制它们(表格标签,div 格式化为表格将是正确的方法, 表的标签已过时)

<table>
    <tr>
        <th>name_of_list</th>
        <th>values</th>
    </tr>

    {% for key, values in your_dictionary.items() %}
    <tr>
        <td>{{key}}</td>
        <td>
        <table>
           <tr>
             <th>article_title</th>
             <th>score</th>
             <th>type</th>
           </tr>
           <tr>
           {% for articles in values %}
               <td>{{article.article_title}}</td>
               <td>{{article.score}}</td>
               <td>{{article.type}}</td>
           {% endfor %}
           </tr>
        </td>
     </tr>
    {% endfor %}

</table>

【讨论】:

  • 感谢您的回答。 name_of_list 和 values 在这里代表什么?
  • Wellcome @Pythoner1234 我想你想把它画成一个有两列的表格,第一列是名称的列表,第二列是列表的每个值。所以第一列包含名称的列表(字典的第一个值 - 键),第二列将是另一个带有其值的表(循环值的字典,表示列表)。
  • 谢谢!我刚刚尝试了代码并由于某种原因得到以下错误 {% for key, values in my_dictionary.items %} TypeError: 'builtin_function_or_method' object is not iterable
  • 对不起@Pythoner1234。已编辑。猜测缺少 items()
  • 我刚刚编辑了问题以包含表格的图像。由于某种原因,桌子似乎迷失了方向。请看我的主帖@EliasMP
【解决方案2】:

如果您只想将已经呈现为 html 的表格作为变量传递给视图,这不是最有效的,但可以完成工作。更好的方法是只传递数据,然后让模板使用模板逻辑循环并在您想要的位置输出变量。

data = {'sentiment_analysis_result': [{'article_title': u'These Digital Locks Help Keep Tabs on Tenants', 'score': u'0.139613', 'type': u'positive'}, {'article_title': u'You Can Get a $50 Phone From Amazon, If You Don\u2019t Mind the Ads', 'score': u'0.239663', 'type': u'positive'}]}

table_string = '<table>'
for key, value in data.iteritems():
    table_string += '<thead>'
    table_string += '<th>' + key + '</th>'
    table_string += '</thead>'
    table_string += '<tbody>'
    for i, d in enumerate(value):
        if i == 0:
            table_string += '<tr>'
            for k in d.iterkeys():
                table_string += '<td>' + k + '</td>'
            table_string += '</tr>'
        table_string += '<tr>'
        for v in d.itervalues():
            table_string += '<td>' + v + '</td>'
        table_string += '</tr>'
    table_string += '</tbody>'
table_string += '</table>'

print(table_string)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2015-04-01
    • 2014-12-08
    • 2021-12-08
    • 2017-07-13
    • 1970-01-01
    相关资源
    最近更新 更多