python - 不含`pandas.DataFrame.to_html()`和`table border`的`tr style`

按照标题,是否可以(如果可以,如何)从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;">
    ...

由于介绍, borderstyle都是外观而不是结构标签,因此应通过 css包括在内。

那么,有什么方法可以摆脱 border内部的 table中的 styletr中的 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。