以下是一个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))
主要功能说明:
-
乱码过滤:保留中文、常用标点和基本字符集 $$ [^\u4e00-\u9fa5,。!?;:“”‘’()《》【】、a-zA-Z0-9.,!?;:'"()<>[]/-\s] $$
-
广告识别:基于特征词+内容长度的组合匹配 $$ \text{Pattern} = (\text{特征词})[\text{中英字符}]{5,50} $$
-
联系方式处理:支持手机号/QQ/微信等多种形式 $$ \text{电话匹配} = \d{7,11},\quad \text{QQ匹配} = \d{5,12} $$
-
格式规整:统一换行符、压缩多余空格和空行
测试输出: """ 正常文本段落应该保留,包含数字123和字母abc。
联系方式已屏蔽 硬回车测试...
""""
可根据实际需求调整正则表达式参数,建议使用时配合文本质量检测进行迭代优化。