我试图输出一个自定义样式的熊猫数据框到html。 我无法理解的一个问题是,当代码在Centos中呈现时,整数被呈现为float。windows上不会发生这种情况。你知道吗
> /usr/local/lib64/python2.6/site-packages/pandas/core/style.py(267)render()
266 any(any(y) for y in x['props'])]
--> 267 d['cellstyle'] = trimmed
268 return self.template.render(**d)
ipdb> n
> /usr/local/lib64/python2.6/site-packages/pandas/core/style.py(268)render()
267 d['cellstyle'] = trimmed
--> 268 return self.template.render(**d)
269
ipdb> s
--Call--
> /usr/local/lib/python2.6/site-packages/jinja2/environment.py(974)render()
973
--> 974 def render(self, *args, **kwargs):
975 """This method accepts the same arguments as the `dict` constructor:
ipdb> n
> /usr/local/lib/python2.6/site-packages/jinja2/environment.py(984)render()
983 """
--> 984 vars = dict(*args, **kwargs)
985 try:
ipdb>
> /usr/local/lib/python2.6/site-packages/jinja2/environment.py(985)render()
984 vars = dict(*args, **kwargs)
--> 985 try:
986 return concat(self.root_render_func(self.new_context(vars)))
ipdb>
> /usr/local/lib/python2.6/site-packages/jinja2/environment.py(986)render()
985 try:
--> 986 return concat(self.root_render_func(self.new_context(vars)))
987 except Exception:
ipdb> for i in self.root_render_func(self.new_context(vars)): print i
输出
<meta charset="utf-8">
<style type="text/css" >
#T_685db4be_a7ba_11e5_9fb7_0ad4bed99552 th {
text-align: center;
}
#T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row0_col0 {
text-align: right;
}
#T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row0_col1 {
text-align: right;
}
#T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row1_col0 {
text-align: right;
}
#T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row1_col1 {
text-align: right;
}
#T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row2_col0 {
text-align: right;
}
#T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row2_col1 {
text-align: right;
}
</style>
<table id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552" None>
<thead>
<tr>
<th class="blank">
<th class="col_heading level0 col0">id
<th class="col_heading level0 col1">count
</tr>
</thead>
<tbody>
<tr>
<th id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552" class="row_heading level1 row0">
0.0
<td id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row0_col0" class="data row0 col0">
7.0
<td id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row0_col1" class="data row0 col1">
2.0
</tr>
<tr>
<th id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552" class="row_heading level1 row1">
1.0
<td id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row1_col0" class="data row1 col0">
56.0
<td id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row1_col1" class="data row1 col1">
2.0
</tr>
<tr>
<th id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552" class="row_heading level1 row2">
2.0
<td id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row2_col0" class="data row2 col0">
4.0
<td id="T_685db4be_a7ba_11e5_9fb7_0ad4bed99552row2_col1" class="data row2 col1">
3.0
</tr>
</tbody>
</table>
那个self.root\u render\u func似乎可疑,因为输入正常:
ipdb> print self.new_context(vars)
<Context {'body': [[{'type': 'th', 'class': 'row_heading level1 row0', 'value': 0}, {'type': 'td', 'class': 'data row0 col0', 'value': 7, 'id': 'row0_col0'}, {'type': 'td', 'class': 'data row0 col1', 'value': 2, 'id': 'row0_col1'}], [{'type': 'th', 'class': 'row_heading level1 row1', 'value': 1}, {'type': 'td', 'class': 'data row1 col0', 'value': 56, 'id': 'row1_col0'}, {'type': 'td', 'class': 'data row1 col1', 'value': 2, 'id': 'row1_col1'}], [{'type': 'th', 'class': 'row_heading level1 row2', 'value': 2}, {'type': 'td', 'class': 'data row2 col0', 'value': 39, 'id': 'row2_col0'}, {'type': 'td', 'class': 'data row2 col1', 'value': 3, 'id': 'row2_col1'}]], 'cellstyle': [{'selector': 'row0_col0', 'props': [['text-align', ' right']]}, {'selector': 'row0_col1', 'props': [['text-align', ' right']]}, {'selector': 'row1_col0', 'props': [['text-align', ' right']]}, {'selector': 'row1_col1', 'props': [['text-align', ' right']]}, {'selector': 'row2_col0', 'props': [['text-align', ' right']]}, {'selector': 'row2_col1', 'props': [['text-align', ' right']]}], 'uuid': '0639c780_a7bc_11e5_adbc_0ad4bed99552', 'table_attributes': None, 'precision': 6, 'lipsum': <function generate_lorem_ipsum at 0x2fb5de8>, 'caption': None, 'range': <type 'xrange'>, 'dict': <type 'dict'>, 'cycler': <class 'jinja2.utils.Cycler'>, 'joiner': <class 'jinja2.utils.Joiner'>, 'head': [[{'type': 'th', 'class': 'blank', 'value': ''}, {'type': 'th', 'class': 'col_heading level0 col0', 'value': u'id'}, {'type': 'th', 'class': 'col_heading level0 col1', 'value': u'count'}]], 'table_styles': [{'props': [('text-align', 'center')], 'selector': 'th'}]} of None>
我的意思是,值不是0.0,1.0,它们是整数。你知道吗
有人知道为什么会这样吗?你知道吗
我还试图理解root_render_func,但找不到代码。你知道吗
我找到了解决办法。你知道吗
通过检查代码,我发现给定的模板没有正确呈现。原因是
round(precision)
。你知道吗所以,我改变了原来的模板一点,以“修复”它。 具体来说,我变了
最初是
{% if c.value is number %}
。你知道吗我仍然不知道为什么不同的平台呈现出不同的效果。你知道吗
相关问题 更多 >
编程相关推荐