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

如何批量移除Pandas DataFrame文本列中的所有HTML标签

pandas DataFrame 列批量清理HTML标签方案

不需要手动维护HTML标签列表,直接用以下两种成熟方案即可实现全量标签移除:

方案1:正则匹配批量移除(轻量高效)

pandas 自带的str.replace方法支持正则匹配,无需逐个枚举标签替换,只需编写规则匹配所有被<>包裹的标签内容即可。注意需要开启正则匹配参数,避免旧版本pandas默认按普通字符串匹配导致规则失效。
对应实现代码:

# 正则规则说明:匹配所有<开头、>结尾的标签内容,[^>]+确保匹配到第一个>就终止,不会误吞标签外的文本
df["text_col_clean"] = df["text_col"].str.replace(r'<[^>]+>', '', regex=True)

用提供的示例数据运行后,输出结果为:

['n',
 ' bla bla bla ',
 'bla bla , , , ',
 'bla bla bla :  , , ']

如果需要同步清理冗余空白,可以衔接字符串处理逻辑做二次清洗:

df["text_col_clean"] = (
    df["text_col"]
    .str.replace(r'<[^>]+>', '', regex=True)  # 移除所有HTML标签
    .str.replace(r'\s+', ' ', regex=True)     # 将连续多个空白字符合并为单个空格
    .str.strip()                              # 移除字符串首尾的空白字符
)

方案2:HTML解析库清理(鲁棒性更强)

如果数据存在大量残缺不闭合标签、HTML转义字符(比如&nbsp;/&amp;这类实体字符),正则匹配容易出现漏删、误删问题,建议用专门的HTML解析库处理,容错率更高。
首先安装依赖库:

pip install beautifulsoup4

对应实现代码:

from bs4 import BeautifulSoup

def clean_html(text):
    # 处理空值、非字符串类型值,避免运行报错
    if not isinstance(text, str):
        return ""
    soup = BeautifulSoup(text, "html.parser")
    # 提取纯文本,自动处理转义字符、残缺标签
    return soup.get_text(separator=" ", strip=True)

df["text_col_clean"] = df["text_col"].apply(clean_html)

选型参考

  • 数据量较大、标签格式基本规范时,选正则方案,执行速度更快
  • 数据质量参差不齐、存在大量不规范标签/转义字符时,选解析库方案,清理结果更准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:06:28