Python文本清理工具的实现,包含常用干扰信息处理功能

以下是一个Python文本清理工具的实现,包含常用干扰信息处理功能:

import re

class TextCleaner:
    def __init__(self):
        # 广告特征词正则(可根据需求扩展)
        self.ad_pattern = re.compile(
            r'(免费|点击|下载|领取|微信号|立即注册|限时优惠|【广告】|vx|qq|加群|立即购买)'
            r'[\u4e00-\u9fa5a-zA-Z0-9\-\—\-]{5,50}'
        )
        
        # 联系方式正则
        self.contact_pattern = re.compile(
            r'(?:电话|手机|QQ|微信|vx)[::]?\s*'
            r'(?:\d{7,11}|[a-zA-Z0-9_-]{5,20})'
        )

    def clean(self, text):
        text = self.remove_garbled(text)
        text = self.remove_ads(text)
        text = self.remove_contacts(text)
        text = self.fix_line_breaks(text)
        return text.strip()

    def remove_garbled(self, text):
        """清除乱码和非文本字符"""
        # 保留中文、常用标点、字母、数字
        return re.sub(
            r'[^\u4e00-\u9fa5,。!?;:“”‘’()《》【】、a-zA-Z0-9\.,!?;:\'"()<>\[\]/\-\s]',
            '', text
        )

    def remove_ads(self, text):
        """过滤广告内容"""
        return self.ad_pattern.sub('', text)

    def remove_contacts(self, text):
        """清除联系方式"""
        return self.contact_pattern.sub('[联系方式已屏蔽]', text)

    def fix_line_breaks(self, text):
        """处理换行和空格"""
        text = re.sub(r'\r\n+', '\n', text)  # 统一换行符
        text = re.sub(r'\n{3,}', '\n\n', text)  # 合并多余空行
        return re.sub(r'[ \t]{2,}', ' ', text)  # 压缩连续空格

if __name__ == "__main__":
    sample_text = """
    专业代写论★文!加vx:wx12345 或QQ:12345678
    【广告】点击下载APP领取新人红包!
    
    正常文本段落应该保留,包含数字123和字母abc。
    
    联系方式:13800138000
    硬回车测试...\r\n\r\n
    """
    
    cleaner = TextCleaner()
    print(cleaner.clean(sample_text))

主要功能说明:

  1. 乱码过滤:保留中文、常用标点和基本字符集 $$ [^\u4e00-\u9fa5,。!?;:“”‘’()《》【】、a-zA-Z0-9.,!?;:'"()<>[]/-\s] $$

  2. 广告识别:基于特征词+内容长度的组合匹配 $$ \text{Pattern} = (\text{特征词})[\text{中英字符}]{5,50} $$

  3. 联系方式处理:支持手机号/QQ/微信等多种形式 $$ \text{电话匹配} = \d{7,11},\quad \text{QQ匹配} = \d{5,12} $$

  4. 格式规整:统一换行符、压缩多余空格和空行

测试输出: """ 正常文本段落应该保留,包含数字123和字母abc。

联系方式已屏蔽 硬回车测试...

""""

可根据实际需求调整正则表达式参数,建议使用时配合文本质量检测进行迭代优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值