You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用pandas的DataFrame.to_html()时如何实现文本换行?

Excel单元格换行文本转HTML表格实现换行的解决方案

问题场景

Excel某单元格包含带换行的文本:

2022/10/17: Update detail in 10/18
2022/10/18: Keep tracking 1 week. Check point: 10/25

用pd.read_excel读取后,内容变为带\n的字符串:

"2022/10/17: Update detail in 10/18\n2022/10/18: Keep tracking 1 week. Check point: 10/25"

通过df.to_html()转HTML用于SMTP发送时,生成的单元格内容会把\n显示为文本,无法实现换行。此前尝试的自定义函数及lambda替换均无效。

可行解决方案

方法一:处理DataFrame数据后转HTML(推荐)

核心是将单元格内的\n替换为HTML换行标签<br>,同时关闭to_html的转义功能(默认会把HTML标签转义为实体字符,导致<br>失效)。

  1. 针对目标列执行替换:
# 替换目标列中的\n为<br>
df['目标列名'] = df['目标列名'].str.replace('\n', '<br>')
  1. 生成HTML时关闭转义:
html_content = df.to_html(escape=False)

方法二:直接修改生成的HTML字符串

如果不需要修改原DataFrame,可以在生成HTML后,全局替换字符串中的\n为<br>:

html_str = df.to_html()
# 替换所有\n为<br>
html_str = html_str.replace('\n', '<br>')

注意:此方法会替换HTML结构中的所有换行,若只需处理单元格内的换行,优先选择方法一。

此前尝试无效的原因

  • 自定义wrap_words函数仅移除了第一行内容,未对\n做有效替换,无法实现换行。
  • 使用lambda替换时未添加escape=False参数,导致<br>被转义为&lt;br&gt;,最终以文本形式显示。

内容的提问来源于stack exchange,提问作者LynChen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:35:25