常用正则清理

本文深入探讨了使用正则表达式进行高效文本处理的方法,包括去除特殊符号、保留特定字符类型(如数字、字母、中文)等实用技巧。通过具体函数示例,展示了如何在Python中实现这些文本清洗操作,适用于数据预处理、信息提取等多种场景。
摘要由CSDN通过智能技术生成
import re
from class_data_structure_module import deep_flatten

# 数字 字母大些 字母小写 中文
sy = ['^\u0030-\u0039', '^\u0041-\u005a', '^\u0061-\u007a', '^\u4e00-\u9fa5']


def delete_special_symbol(string, resymbol=""):
    '''
    去除所有符号
    :param string: -> 原始字符串
    :return: -> 处理字符串
    '''
    sub_str = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])", resymbol, string)
    return sub_str


def del_symbol(string, resymbol=""):
    '''
    只保留数字和文字信息
    :param string:
    :return:
    '''
    sub_str = re.sub('["#$%&\'*+-/<=>?@,。?★、[\\]^_`|~\s]+', resymbol, string)
    return sub_str  # 去除不可见字符


def del_number(string):
    '''
    删除数字和符号
    :param string:
    :return:
    '''
    ls = []
    for c in string:
        ls +=[c not in [str(i) for i in range(10)] and c or '']
    return ''.join(ls)


def only_number(string, resymbol=""):
    '''
    只保留数字
    :param string:
    :param resymbol:
    :return:
    '''

    sub_str = re.sub(u"([^\u0030-\u0039])", resymbol, string)
    return sub_str


def only_capital(string, resymbol=""):
    '''
    只保留大写字母
    :param string:
    :param resymbol:
    :return:
    '''
    sub_str = re.sub(u"([^\u0041-\u005a])", resymbol, string)
    return sub_str


def only_lowercase(string, resymbol=""):
    '''
    只保留小写字母
    :param string:
    :param resymbol:
    :return:"#$%&\'()*+,-./:;<=>?@,。?★、()…【】《》?“”‘’![\\]^_`{|}~
    '''
    sub_str = re.sub(u"([^\u0061-\u007a])", resymbol, string)
    return sub_str


def only_chinese(string, resymbol=""):
    '''
    只保留中文
    :param string:
    :param resymbol:
    :return:
    '''
    sub_str = re.sub(u"([^\u4e00-\u9fa5])", resymbol, string)
    return sub_str

symbles=''':,"{[}](>)</\n。●  ,、的 啊 好 和
并 与 及 对 错 你 我 我们 她 他 它:: ; ;《 》
1 2 3 4 5 6 7 8 9 0  ‘ “ ” ’ + - * / ` ~ 
\( \ [ \ { \ } ] ) ( )【 \xa0 】理想 愿景
工 不管 只要 一员 大家庭 当成 作 帅哥 美女 年轻
佛系
'''
def delete_element(strings,symbles=symbles):
    srcrep = {i:'' for i in symbles }
    rep = dict((re.escape(k), v) for k, v in srcrep.items())
    pattern = re.compile("|".join(rep.keys()))
    return pattern.sub(lambda m: rep[re.escape(m.group(0))], strings)

if __name__ == '__main__':
    pass
    s = "123我123456abcdefg(){}ABCVDFF?(中,国)/ ,。,.:;:''';'''[]{}()()《zhong"
    print(del_number(s))
    '''

    print(delete_special_symbol(s,resymbol=''))
    print(del_symbol(s,resymbol=''))
    print(only_number(s,resymbol=""))
    print(only_capital(s,resymbol=''))
    print(only_lowercase(s,resymbol=""))
    print(only_chinese(s,resymbol=""))
    '''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值