首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 写各大聊天系统的屏蔽脏话功能原理

关键时刻,第一时间送达!

突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时候检测,那么个人还是喜欢用列表,因为列表灵活使用扩展都很方便,有了脏话库我们在来想核心怎么屏蔽脏话,你要记得玩家输入的弹幕数据类型是什么首档其次是字符串如果没有特殊要求就它了,万变不离其中总是这几个数据结构嘛,有了字符串替换*号什么的都轻松许多了对吧,今天所聊的是完整的一套结构,为了让大家更清晰学会,我会拆分代码然后在组装起来讲,这样大家就会有个更深了了解首先来看看核心的功能替换脏话代码如下:

import datetime

speak='你个狗日的,fuckR你妈哟,操你个仙人板板,个老麻批'

dirty=['fuck','狗日的','犊子','麻批','仙人板板','R你妈','操你','草你']

foriindirty:

speak=speak.replace(i,'*')

printspeak+" | "+str(time)

是不是简单轻松的就把脏话给屏蔽掉了呢,这导入了时间模块datetime用来获取现在本地时间,后面会用来写入日志保存,当然很多游戏对话里面也会显示当前时间,然后speak是玩家要输出的脏话(现在是演示后面会改成Input真正的输入交互),dirty是定义的脏话库(当然没写太多因为每地域都不同太多了写不完),后面跟一个for循环来检索,只要你说的话里面包含脏话库内,那么我们就用replace替换掉,最后打印也就等于公屏上显示的字幕都是*了…当然我们还要想那如何去跟踪是谁什么时间都说了什么,这样关联就要用到类了,肯定会有疑惑为什么用类,首先类class是一类(比如桌子有方桌、圆桌、会议桌、办公桌等)事物描述的概括,例如一群玩家Player,他们都有各自的游戏名字name,然后都具有聊天功能(我们又称之为动作),这样就既可以分类又可以达到区分的效果。代码如下:

classPlayer(object):

def __init__(self,name):

self.name=name

def talk(self):

self.string='whatever fuck no joke'

self.log()

print"公屏显示:%s--%s"%(self.name,self.string)

def log(self):

print"日志记录为:%s--%s"%(self.name,self.string)

t1=Player('white')

t1.talk()

import datetime

dirty=['fuck','狗日的','犊子','麻批','仙人板板','R你妈','操你','草你']

classPlayer(object):

def __init__(self,name):

self.name=name

def talk(self):

self.string=raw_input("input-write:")

# self.string = '你个狗日的,R你妈哟,操你个仙人板板,个老麻批'

self.log()

foriindirty:

print"{} {}-speak:{}".format(time,self.name,self.string,)

def log(self):

with open('zanghua.txt','a')asf:

f.write("{} {}-speak:{}n".format(time,self.name,self.string))

t1=Player('white')

t2=Player('black')

t3=Player('green')

whileTrue:

n=raw_input('change Player:')

ifn=='1':

t1.talk()

elifn=='2':

t2.talk()

elifn=='3':

t3.talk()

elifn=='q':

print'Bye'

break

else:

print"尼玛在逗我?"

测试结果如下:

你可以新建一个文件名叫zanghua.txt空文本就行,只是用来演示存储日志的行为效果,上面打印说change Player是为了演示不同用户输入做了个简易切换,实际上的系统你登录后很少切换用户之类的,就只是当前帐号聊天了,这里的代码就添加文件处理方式with open (文件名,打开模式) 简称为 f之类的然后写入write(记得在写入的最后加上n换行符,不然全写第一行很难认)关于datetime[:7]切片 把上面打印时候时间后面的余数给忽略掉更简洁点。基本上的流程如此,当然可以有很多扩展,例如脏话次数超过多少禁止发言,限制发言几分钟啊,日志方面可以定时清空啊等等。这就看大家自己去研究了,代码量就有点大了这里就不展示了。最后我要说明的图如下,有很多人估计误解了些点什么。。

这只是演示流程的思路(提供给入门开发的新手参考),请大佬们不要误解。

最后还是老台词感谢观看,下次再见~~~!!!

来源:Cookie-Fei

www.cnblogs.com/cookie1026/p/6121363.html

Python开发整理发布,转载请联系作者获得授权

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180227B172W600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券