根据标题,是否有可能——如果有,如何——从 pandas.DataFrame.to_html()
生成“干净”的 HTML 代码?
我发现 border=...
和 justify=...
参数控制着那里显示的内容,但显然无论你在那里放什么值,你似乎总是能得到它们。
这是一个最小的工作示例:
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.arange(3 * 4).reshape(3, 4))
df.to_html(border=0, justify='inherit')
它产生:
<table border="0" class="dataframe">
<thead>
<tr style="text-align: inherit;">
...
但是,我一直期待:
import pandas as pd
import numpy as np
df = pd.DataFrame(data=np.arange(3 * 4).reshape(3, 4))
df.to_html(classes=None, border=None, justify=None)
会/应该产生:
<table class="dataframe">
<thead>
<tr>
...
代替:
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
...
自推出以来
border
和 style
是外观而不是结构标签,应该通过 css
包含在内.那么,有没有办法摆脱
border
来自 table
和 style
来自 tr
内thead
?
最佳答案
正如您已经观察到的,df.to_html(classes=None, border=None, justify=None)
忽略 None
的设置, 插入默认值。有修改这个的公开请求,但它们还没有到位。就目前而言,删除这些硬编码样式的唯一方法是操作输出字符串,如下所示:
html = re.sub(r'<tr.*>', '<tr>', df.to_html().replace('border="1" ', ''))
删除
class="dataframe"
可以以相同的方式完成,但如果保留原位,这不应该影响大多数 CSS。
关于python - `pandas.DataFrame.to_html()` 没有 `table border` 和 `tr style`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51460112/