Python文本清洗工具类:高效处理文档格式与特殊字符

在实际的文本处理和数据清洗工作中,我们经常需要处理来自不同来源的文本数据,这些数据往往包含各种格式问题、特殊字符和不必要的标记。本文将介绍一个实用的Python文本清洗工具类,帮助您高效地进行文本预处理。

工具类功能概述

TextCleanUtil 是一个专门用于文本清洗的工具类,它提供了静态方法 clean() 来处理常见的文本格式问题,包括:

  1. 换行符标准化:移除Windows换行符(\r),统一为Unix风格换行
  2. 空白字符处理:将制表符转换为空格,合并多个连续空格
  3. 文档标记清理:移除页码标记(如"第 1 页")和总页数标记
  4. 控制字符过滤:移除不可见的控制字符,确保文本的纯净性

使用场景

该工具类特别适用于以下场景:

  • 从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()