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

sg2wtvxw  于 2022-12-21  发布在  其他
关注(0)|答案(4)|浏览(364)

我在一个列表中有一堆panda数据框,我需要将它们转换成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>

显示如下:


'
有谁能帮我解决这个问题吗?

5gfr0r5j

5gfr0r5j1#

要显示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)
6ovsh4lw

6ovsh4lw2#

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')
u1ehiz5o

u1ehiz5o3#

即使在比赛后期...
当我遇到同样的问题时,我偶然发现了这个帖子。希望下面的帖子能对某人有所帮助。
我把df.to_html()的结果赋给了一个(嵌套的)列表,并在我的Jinja模板中渲染时得到了新的行。
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>
emeijp43

emeijp434#

甚至比迟到还晚。换行符的问题是,当从应用传递到Jinja时,默认情况下帧是JSON格式的。\n是按字面意思读取的,但表是根据JSON字符串中的内容构建的。有两种情况需要处理,具体取决于传递 Dataframe 的方法:

情况1:使用render_template传递 Dataframe :

在应用中传递不带“df.to_html”的框架。在html中使用Jinja2语法获取不带任何换行符的干净框架:

{{ df_html.to_html(classes="your-fancy-table-class") | safe }}

案例2:传递json.dumps以在JS中检索

如果您通过响应发送帧,例如发布 AJAX 请求,请使用df.to_html()传递帧,如您所做的:

@app.route('/foo', methods=['POST']) #load and return the frame route
def foo():
   # df = pd.DataFrame...
   return json.dumps({"response": df.to_html}

然后在你的JS中,从你的响应中加载HTML中没有换行符的干净框架:

JSON.parse(data).response;
$("#your-table-wrapper").html(response);

相关问题