在实际的文本处理和数据清洗工作中,我们经常需要处理来自不同来源的文本数据,这些数据往往包含各种格式问题、特殊字符和不必要的标记。本文将介绍一个实用的Python文本清洗工具类,帮助您高效地进行文本预处理。
工具类功能概述
TextCleanUtil 是一个专门用于文本清洗的工具类,它提供了静态方法 clean() 来处理常见的文本格式问题,包括:
- 换行符标准化:移除Windows换行符(\r),统一为Unix风格换行
- 空白字符处理:将制表符转换为空格,合并多个连续空格
- 文档标记清理:移除页码标记(如"第 1 页")和总页数标记
- 控制字符过滤:移除不可见的控制字符,确保文本的纯净性
使用场景
该工具类特别适用于以下场景:
- 从PDF、Word文档提取的文本清洗
- 网页爬虫获取内容的预处理
- 用户输入文本的规范化处理
- 数据分析前的文本预处理步骤
下面是我们实现的完整代码:
python
# 文本清洗工具类# Python文本清洗工具类:高效处理文档格式与特殊字符
import re
class TextCleanUtil:
"""文本清洗工具类,提供静态方法进行文本预处理"""
@staticmethod
def clean(text: str) -> str:
"""
清洗文本,移除不必要的字符和格式
Args:
text (str): 待清洗的文本
Returns:
str: 清洗后的文本,如果输入为空则返回空字符串
"""
if not text:
return ""
# 移除Windows换行符
text = text.replace("\r", "")
# 替换制表符为空格
text = text.replace("\t", " ")
# 合并多个连续空格为单个空格
text = re.sub(r"\s+", " ", text)
# 移除页码标记(如"第 1 页")
text = re.sub(r"第\s*\d+\s*页", "", text)
# 移除总页数标记(如"共 10 页")
text = re.sub(r"共\s*\d+\s*页", "", text)
# 移除控制字符(ASCII 0-8, 11, 12, 14-31)
text = re.sub(r"[\x00-\x08\x0B\x0C\x0E-\x1F]", "", text)
return text.strip()