Python正则表达式对社交文本进行清洗

我这里处理场景是推文,其他平台应该需要有所调整

处理表情:

import re

def filter_emoji(content):
    try:
        cont = re.compile(u'['u'\U0001F300-\U0001F64F' u'\U0001F680-\U0001F6FF'u'\u2600-\u2B55]+')
    except re.error:
        cont = re.compile(u'('u'\ud83c[\udf00-\udfff]|'u'\ud83d[\udc00-\ude4f\ude80-\udeff]|'u'[\u2600-\u2B55])+')
        # return cont.sub (u'', content)
    # 过滤表情
    try:
    	# 自定义添加表情
        cont2 = re.compile(u'[\U00010000-\U0010ffff]|[❤]|[☕]|[✌]|[♂]|[♀]|[☹]|[️]|[♥]|[️]|[✊]|[★]|[■]'
                          u'[⬆]|[➡]|[➡]|[⚽]|[⚠]|[▶]|[▶]|[⏺]|[⛈]|[❄]|[❌]|[☀]|[☺]|[✌]]|[‼]]|[♥]]')
    except re.error:
        cont2 = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
    emojis = list(set(cont.findall(content)+cont2.findall(content)))
    return emojis

处理链接:

import re

# 本函数输入字符串,匹配网址,返回匹配的网址列表
def parse_urls(string):
    pattern = re.compile('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
    url = re.findall(pattern,string)
    # 自定义当前平台常见的图片url和特有url进一步匹配
    pattern2 = re.compile('pic.twitter.com/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
    url2 = re.findall(pattern2,string)
    return url+url2

处理at@:

import re

def parse_ats(string):
    ats = re.findall(r'@([\u4e00-\u9fa5\w\-]+)',string)
    return ats

处理topic#(根据平台调整):

import re

def parse_topics(string):
    topics = re.findall(r"([#].*?)\s",string)
    topics2 = re.findall(r"(^[#]\w+\S)\.",string)
    topics3 = re.findall(r"#\w+\S",string)
    fullist = topics + topics2 + topics3
    for i in range(0,len(fullist)):
        fullist[i] = fullist[i].replace('.', '')
    topic_sets = set(fullist)
    return list(topic_sets)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值