根据标题,是否可以(如果可以,如何)从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
的{{1}}和style
的{{1}}吗?
答案 0 :(得分:2)
如您所见,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。