前段时间在过滤微博评论的时候,整理了一下内容的过滤,主要是以下几个方面:
- html标记
- url 标记
- 去掉@标记与@某人的标记
- 去掉一些特殊字符
- 过滤表情(一些表情符号的过滤)
- 过滤掉\ax0(去掉一些空格标记)
- 是否转换为小写(为了后期的统一,都转换为小写)
# from HTMLParser import HTMLParser
from html.parser import HTMLParser
import re
def filter_emoji(desstr,restr=''):
#过滤表情
try:
co = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
co = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
return co.sub(restr, desstr)
def data_filter(content, lower=False):
# 1.去掉html标记
html=content.strip()
html=html.strip("\n")
result=[]
parse=HTMLParser()
parse.handle_data=result.append
parse.feed(html)
parse.close()
content = "".join(result)
# 2.去掉url标记
r1 = '''http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'''
content = re.sub(r1, '', content)
# 3.去掉@标记与@某人的标记
r2 = "(@.*?)+ "
content = re.sub(r2, '', content)
content = re.sub(r"(回复)?(//)?\s*@\S*?\s*(:| |$)", " ", content)
# 4.去掉一些特殊字符
r3 = u'[’!"#$%&\'()*+,-./:;<=>?@;;:.|~\≧▽—°❄×☝➡️❤️⭐■⏰🎂🌕👇🤔📷🎤🉑➕🥑👍📒🥚📹🆔🍊☁✨📍💝👗🚄🍀🐾🍓🐋▲🔺🔗❗🦐🐫🧜🏃👇➕♥♀☀●巜「」☕/↓→<=>?@⁄•ω★💊🙈☕💰😂·、…★、…【】《》『』()?“”‘’![\\]^_`{|}~]+'
content = re.sub(r3, '', content)
# 5.过滤表情
content = filter_emoji(content,restr='')
content = re.sub(r"\[\S+\]", "", content) # 去除表情符号
# 6.合并正文中过多的空格
content = re.sub(r"\s+", " ", content)
# 7.过滤掉\ax0
content = content.strip().replace(u'\u3000', u'').replace(u'\xa0', u'')
# 8.是否转换为小写
if lower:
content = str(content).lower()
return content.replace(" ", "")
content = "#我的5G 我的荣耀#拿着荣耀V30的@李现ing 和@Johnny黄景瑜 ,帅!欢迎粉丝们拍照打卡,带上#荣耀V30#话题转发分享! "
content = '你好啊hahah@啊哈哈 接下来一年,我希望在<SPAN style="COLOR: red">惠普</SPAN>电脑看到更人性化,各科技化的东西,更能提升视觉享受的东西。 地址:<A title=http://t.cn/8kUAX2z href="http://t.cn/8kUAX2z" target=_blank suda-data="key=tblog_search_v4.1&value=weibo_feed_url" :3651215114310513>http://t.cn/8kUAX2z<SPAN class=feedico_active></SPAN></A>'
content = "致敬音乐本真初心,探索真乐边界态度。在上届咪咕汇盛典中,周杰伦超话、@五月天、@蔡依林、@薛之谦、@蔡徐坤 等重磅咖司曾出席现场,颁发出20项大奖,吸引1.8亿人次在线观看直播。 而今年的神武第十三届#音乐盛典咪咕汇#,将有哪"
content = "#神奇,NEX 3在哪里# 碟中谍?来帮我找找NEX 3 5G在哪儿@李翔要增肥 @NEX智慧旗舰 L程佩文的微博视频 "
# content = "miakong超话ChillinbeforetheMiuMiuShow🐉🌠🍶😉BodygoniateeFourSea丝绸长裤vintage黑色羽毛拖鞋MiuMiu黑色挎包AlexanderWang荧光色袜Nike📷"
# content = "展现新中国成立70年来,中国电影的发展成就和艺术魅力,出席明星范丞丞超话宋祖儿超话赵薇超话黄晓明超话黄景瑜超话郑凯超话林允超话陈赫超话姚晨超话迪玛希超话 等 O风直播的微博直播"
data_filter(content, upper=False)
参考链接
https://blog.youkuaiyun.com/junli_chen/article/details/77685128