我在列表中有一堆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>
显示如下:
任何人都可以帮我解决这个问题吗?
答案 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>