列表中元素的pandas.to_html()显示换行符

时间:2015-07-28 21:37:22

标签: html pandas

我在列表中有一堆pandas数据帧,我需要转换为html表。每个单独数据帧的html代码看起来都不错,但是当我将html附加到列表时,我最终会在我的网页上显示一堆\n个字符。谁能告诉我如何摆脱它们?

python代码

dataframe_html = []
table_dic = {}

for df in dataframes:
  frame = df.to_html(classes="table table-hover")
  dataframe_html.append(frame)  #this is the line where all the \n get added

table_dic.update({'dataframe_html':dataframe_html})

return render(request,'InterfaceApp/FileProcessor_results.html',table_dic)

HTML代码

<div class="table-responsive">
    {{ dataframe_html | safe }}
</div>

显示如下:

enter image description here

任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

要显示3个单独的表,请将HTML字符串列表连接到一个字符串中:

dataframe_html = u''.join(dataframe_html)
for df in dataframes:
    frame = df.to_html(classes="table table-hover")
    dataframe_html.append(frame)  
dataframe_html = u''.join(dataframe_html)
table_dic = {'dataframe_html':dataframe_html}

return render(request,'InterfaceApp/FileProcessor_results.html',table_dic)

答案 1 :(得分:0)

FWIW在比赛的最后阶段:

我原来有:

    response = render_template('table_display.html', query_results=[df_html], query_name='Quality Item Query')

并且正在获得整行\ n个字符。改为以下,换行线消失了。

    response = render_template('table_display.html', query_results=df_html, query_name='Quality Item Query')

答案 2 :(得分:0)

即使在游戏后期...

我遇到同样的问题时偶然发现了这个线程。希望以下内容对某人有所帮助。

我将 df.to_html() 的结果分配给(嵌套)列表,并在我的 Jinja 模板中渲染时获得了新行。 @AlliDeacon 启发的解决方案是在渲染时再次索引结果

Python 代码:

result[0][0] = df.to_html()

Jinja 模板:

<div>Table: {{ result[0][0][0] }}</div>

请参考以下代码的输出以说明(子)列表和列表元素之间的区别:

df = pd.DataFrame([['a','b']],
              columns=['col_A', 'col_B'])

tmp = []
tmp.append(df.to_html(index=False))

print(tmp)

print(tmp[0])

结果:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th>col_A</th>
      <th>col_B</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>a</td>
      <td>b</td>
    </tr>
  </tbody>
</table>