正则表达式小应用

正则表达式在处理文本尤其是对文本进行过滤和筛选等工作时很有用,经常用于字符串的匹配等操作。
首先贴出一下常见的正则表达式的应用的情景。
匹配中文字符:[\u4e00-\u9fa5]
匹配由26个英文字符和数字组成的字符串:[a-zA-Z0-9]+
匹配空白行:\n\s*\r
匹配电话号码:\d{3}-\d{8}|\d{4}-\d{7},如0511-4405222或021-87888888

最近处理一个文档,第一步,需要过滤掉中文英文常见标点符号之外的特殊字符。

#python3主要代码
import re
regex = re.compile(u'[^0-9a-zA-Z\u4e00-\u9fa5,。!?;)(”“",::……]')
data_value[i] = regex.sub('',data_value[i])

第二步,去掉重复出现的标点符号。

p = re.compile(r"([,。!?;)(”“",::……]])(\1+)")
data_value[i] = p.sub(r'\1',data_value[i])

第三步,去掉过长的由英文和数字组成的字符串

q = re.compile(r"[a-zA-Z0-9]{10,}")
data_value[i] = q.sub('',data_value[i])

第四步,去掉由数字和字符组成的字符串

r = re.compile(r"[0-9,。!?;)(”“",::……]{2,}")
data_value[i] = r.sub('',data_value[i])

对于中文文档很多情况下还需要进行分词,可以采用结巴分词进行。

#主要分词过程
import jieba
length = len(data)
for i in range(length):
    s = jieba.cut(dataB[i])
    ss = ' '.join(s)
    dataB[i] = ss

文档处理后的结果为:
处理后的文本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值