`pandas.DataFrame.to_html()` 没有 `table border` 和 `tr style`

nor*_*ok2 5 html python pandas

根据标题,是否有可能——如果有,如何——从 生成“干净”的 HTML 代码pandas.DataFrame.to_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')
Run Code Online (Sandbox Code Playgroud)

它产生:

<table border="0" class="dataframe">
  <thead>
    <tr style="text-align: inherit;">
    ...
Run Code Online (Sandbox Code Playgroud)

但是,我一直期待:

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)
Run Code Online (Sandbox Code Playgroud)

会/应该产生:

<table class="dataframe">
  <thead>
    <tr>
    ...
Run Code Online (Sandbox Code Playgroud)

代替:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
    ...
Run Code Online (Sandbox Code Playgroud)

因为介绍borderstyle都是外观而不是结构标签,应该通过css.

那么,有没有什么办法可以摆脱bordertablestyletr里面thead

Rob*_*ahn 4

正如您已经观察到的,df.to_html(classes=None, border=None, justify=None)忽略 的设置None,无论如何插入默认值。有公开请求对此进行修改,但尚未到位。就目前情况而言,删除这些硬编码样式的唯一方法是操作输出字符串,如下所示:

html = re.sub(r'<tr.*>', '<tr>', df.to_html().replace('border="1" ', ''))
Run Code Online (Sandbox Code Playgroud)

可以用同样的方式完成删除class="dataframe",但如果保留在原处,这不会影响大多数 CSS。