如何使用Python遍历含HTML文本的列去标签并新增列存储干净文本
批量清洗DataFrame中HTML标签的实现方案
依赖安装
首先确保已安装所需工具库:
pip install pandas beautifulsoup4 lxml
步骤实现
1. 封装HTML清洗函数
把你已有的单文本清洗逻辑封装为可复用的函数,同时处理空值、解析异常等边界情况,避免批量运行时报错:
import pandas as pd from bs4 import BeautifulSoup from html import unescape def clean_html(html_text): # 处理空值、非字符串类型的异常场景 if pd.isna(html_text) or not isinstance(html_text, str): return html_text try: soup = BeautifulSoup(unescape(html_text), features='lxml') return soup.get_text(separator=' ') except: # 解析异常时直接返回原文本避免数据丢失 return html_text
2. 批量处理多列并追加新列
方案1:手动指定需要清洗的列
如果你明确知道哪些列包含HTML标签,直接定义列名列表批量处理即可,清洗后的新列默认以原列名_cleaned作为后缀追加:
# 替换为你实际需要清洗的列名 need_clean_cols = ['列1', '列2', '列3'] for col in need_clean_cols: df[f'{col}_cleaned'] = df[col].apply(clean_html)
方案2:自动识别所有字符串类型列清洗
如果不确定哪些列含HTML标签,可以自动筛选所有字符串类型的列批量处理:
# 自动筛选所有object类型(字符串存储默认类型)的列 need_clean_cols = df.select_dtypes(include=['object']).columns.tolist() for col in need_clean_cols: df[f'{col}_cleaned'] = df[col].apply(clean_html)
效果对照
- 原始数据表:

- 目标效果表:

内容的提问来源于stack exchange,提问作者luanstat
相关产品推荐
相关产品推荐

