在 pandas 数据帧上显示 html 字符串值

Display html string value on pandas dataframe

假设我有一个包含字符串值的数据框,其中包含一些 HTML

my_dict = {"a":{"content":"""
<p>list of important things</p>
<ul>
<li>c</li>
<li>d</li>
</ul>
"""}}

df = pd.DataFrame.from_dict(my_dict,orient='index')

结果符合预期:

我想将数据框导出为 HTML,以便我的 HTML 字符串在 table 单元格内工作。

我试过的

我知道 DataFrame.to_html(escape=False),它会产生:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>content</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>a</th>
      <td>\n<p>list of important things</p>\n<ul>\n<li>c</li>\n<li>d</li>\n</ul>\n</td>
    </tr>
  </tbody>
</table>

哪个看起来不对:

因为那个HTML有一个文字\n,所以我认为该方法在将它插入到HTML的转换中时已经采用了字符串值的repr数据集。

知道 我可以再次将 scaped \n 替换为 \n,这看起来应该是:

但我想知道是否有某种方法可以告诉 pandas 将数据帧的文字字符串值插入 HTML,而不是 repr。我不明白 .to_html() 的一半 kwargs,所以我不知道这是否可能。

I'd like to export the dataframe as HTML such that my HTML string works inside the table cells.

如果是这样,您可能需要考虑将 \n 替换为 HTML 换行符,即。 <br> 如果你想为它换行或者你可以用一个空字符串替换它。

df['content'] = df['content'].str.replace('\n', '<br>')
df.to_html('html.html', escape=False)

如果你不想替换数据帧本身,你可以让 pandas 通过将其作为格式化程序传递来处理它:

df.to_html('html.html', 
           formatters = {'content': lambda k: k.replace('\n', '<br>')}, 
           escape=False)

如果你只是想完全摆脱新行,你可以用空字符串替换它,在数据帧本身或作为格式化程序传递。

df.to_html('html.html', 
           formatters = {'content': lambda k: k.replace('\n', '')}, 
           escape=False)