「Python」数据清洗常用正则

爬虫从网站上爬取的内容在读写操作时经常会报以下错误:
UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\u200b’ in position 7: illegal multibyte sequence
所以需要我们对数据Unicode进行清洗,排除文章内异常的Unicode符号。

清洗思路

我的思路是用正则表达式来匹配常用字,不在范围内的Unicode编码则去除。
.compile(u”[^常用字范围]+”)匹配到非范围内字符后,
.sub()方法将特殊字符替换成空

def illegal_char(s):
    s = re \
        .compile( \
        u"[^"
        u"\u4e00-\u9fa5"
        u"\u0041-\u005A"
        u"\u0061-\u007A"
        u"\u0030-\u0039"
        u"\u3002\uFF1F\uFF01\uFF0C\u3001\uFF1B\uFF1A\u300C\u300D\u300E\u300F\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\u3010\u3011\u2014\u2026\u2013\uFF0E\u300A\u300B\u3008\u3009"
        u"\!\@\#\$\%\^\&\*\(\)\-\=\[\]\{\}\\\|\;\'\:\"\,\.\/\<\>\?\/\*\+"
        u"]+") \
        .sub('', s)
    return s

Unicode范围

常用范围

名称 范围
中文 \u4e00-\u9fa5
日文平假名 \u3040-\u309f
日文片假名 \u30a0-\u30ff
韩文 \uac00-\ud7ff
英文字母 \u0041-\u005A\u0061\u007A
数字 \u0030-\u0039
英文标点 !\@#$\%\^\&*()-\=[]{}\\;\’:\”,.\/\<>\?\/*+
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值