聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )


Python 官网https://www.python.org/


  这里,才 python 前沿。可惜是英文原版。所以,我要练习英文阅读。🧐🧐

  • 我的CSDN主页
  • My Python 学习个人备忘录
  • 我的HOT
  • 老齐教室

  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。

            —— 华罗庚


练习:聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )


在这里插入图片描述


  对我要做练习的描述,直接“窃取”大佬了。😜😜做这个练习,也是刷到大佬博文《【经典算法】:英雄联盟中打字屏蔽系统的实现》才滋生“意识”的。🤗🤗
  因为大佬的“打字屏蔽系统”是 C 铸就,我只会点儿 python ,看不太懂。试着用 python 实现……

  “聊天消息敏感词屏蔽系统”,听起来好“高深”的样子,实则不然。就用了一个“人人都会”的 str.replace(str1, str2) 字符串替换方法。就是设置一个实际是元组的屏蔽词库(用任何序列都可以,我作演示,用元组 tuple 方便安全。),接收输入字符串并遍历屏蔽词库,用*替换包含的“敏感词”,输出处理后的“聊天消息字符串”即可。

  1. 系统菜单

  2. 屏蔽词库新词追加

  3. 消息处理

  4. 完整代码


回首页

主菜单

  这次不象以前练习,设计为动态菜单列表。如需添加菜单项,只需把菜单项字符串放在列表相应位置就好。(注意:增加菜单后,记得到“菜单确认”模块修改 range() 合法菜单选择范围,不然无法选中新增菜单序号。并增添相应的 elif 选项。)

def menu_show():'''菜单打印模块,无需参数传递'''menus = menus = ('屏蔽词库新词追加', '消息录入→处理→输出', '退出') # 这次不象以前练习,设计为动态菜单列表。如需添加菜单项,只需把菜单项字符串放在列表相应位置就好。(注意:增加菜单后,记得到“菜单确认”模块修改 range() 合法菜单选择范围,不然无法选中新增菜单序号。并增添相应的 elif 选项。)clear() # 清屏。gui_head() # 界面头调用。for k,i in enumerate(menus): # 遍历枚举函数 enumerate() ,方便列印菜单序号。if i != '退出':print(f"\n{k+1:>12}. {i}")else:exit_s = f" {0}. {i} "print(f"\n{'':>13}{exit_s:=^13}")gui_tail() # 界面尾调用。

菜单效果

在这里插入图片描述


回首页

屏蔽词库追加新词

def append_screens():''' 追加屏蔽词库 '''clear() while True:s = input(f"{cut_line()}{'追加屏蔽词:'}")if s == '':return # 输入空字符串 '',结束追加屏幕词库。screens.append(s) # 追加新词。input(f"\n\n{' ':>11}“{color(s, 'f_green')}”,已成功追加到屏蔽词库。{cut_line()}")

新词追加效果

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
注:敏感词库初始为空 () ,您得先行追加字符串元素。才可以进行第二项菜单试炼。


回首页


聊天消息录入→替换敏感词→输出聊天消息字符串

def input_message():''' 聊天消息录入并处理:聊天消息录入→处理屏幕词→输出聊天消息字符串。 '''message = input(f"{cut_line()}{'聊天消息输入:'}")s = messagefor i in screens: # 遍历屏幕词库,替换聊天消息中的敏感词。if i in s:s = s.replace(i, '*')input(f"\n\n{' ':>8}输出:{color(s,'f_green')}{cut_line()}")return s

聊天消息字符串处理效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  如您所见,成功屏蔽了加入屏蔽词库的字符串元素。

  这次练习,主要是演示效果,“屏蔽词库”没有写入磁盘,进入系统,首先得向词库列表添加字符串元素,菜单“2”的聊天消息录入字符串处理才有实际意义——才会用星号(*)屏蔽掉输入的敏感词句字符串。如有需要,可自行添加。菜单显示,可谓“动态”,添加比较方便的。详见练习: python 个性计算器。


回首页

完整 Python 代码


  我的解题思路,已融入代码注释,博文中就不再赘述。

(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)

def main():'''主执行代码块'''    while True: # 菜单列印和确认死循环,不主动退出就一直执行循环。clear() menu_show() # 屏幕打印菜单。is_menu() # 菜单选择。def error_show():'''错误提示打印'''print(f"\n\n{'输入错误!':=^36}")def gui_head():'''界面头'''print(f"\n\n{color(1, 'f_green')}{'':*^41}\n{' ':10}{'聊天消息敏感词屏蔽系统'}\n{'【':>10}{localtime_show()}】\n{'':-^41}{color(0)}")def gui_tail():'''界面尾'''print(f"\n{color(1, 'f_green')}{'':-^41}\n{'Author:Dream-elf_cq':^41}{'(梦幻精灵_cq)':^37}\n{'':*^41}{color(0)}")def menu_show():'''菜单打印模块,无需参数传递'''menus = menus = ('屏蔽词库新词追加', '消息录入→处理→输出', '退出') # 这次不象以前练习,设计为动态菜单列表。如需添加菜单项,只需把菜单项字符串放在列表相应位置就好。(注意:增加菜单后,记得到“菜单确认”模块修改 range() 合法菜单选择范围,不然无法选中新增菜单序号。并增添相应的 elif 选项。)clear() # 清屏。gui_head() # 界面头调用。for k,i in enumerate(menus): # 遍历枚举函数 enumerate() ,方便列印菜单序号。if i != '退出':print(f"\n{k+1:>12}. {i}")else:exit_s = f" {0}. {i} "print(f"\n{'':>13}{exit_s:=^13}")gui_tail() # 界面尾调用。def is_menu():'''菜单确认'''while True:try: # 菜单选择错误捕获。menu = int(input(f"\n\n{'菜单选择:':>12}"))if menu not in range(3): # 合法菜单选择序号范围设定。error_show()input(f"\n{'错误类型:没有此项菜单!':-^29}")breakexcept Exception as error:error_show() input(f"\n错误类型:{error}")# 菜单项增加后,就得增加一个 elif 。if menu == 0: # 0. 退出clear()print(f"{cut_line()}{color(' 欢迎下次使用“消息屏蔽系统” ', 'f_purple'):=^39}{cut_line()}")exit() elif menu == 1: # 1. 屏蔽词库新词追加。while True:clear() if not append_screens():break elif menu == 2: # 2. 消息处理输出。while True:clear() if not input_message():break def append_screens():''' 追加屏幕词库 '''clear() while True:s = input(f"{cut_line()}{'追加屏蔽词:'}")if s == '':return # 输入空字符串 '',结束追加屏幕词库。screens.append(s) # 追加新词。input(f"\n\n{' ':>11}“{color(s, 'f_green')}”,已成功追加到屏蔽词库。{cut_line()}")def input_message():''' 聊天消息录入并处理:聊天消息录入→处理屏幕词→输出聊天消息字符串。 '''message = input(f"{cut_line()}{'聊天消息输入:'}")s = messagefor i in screens: # 遍历屏幕词库,替换聊天消息中的敏感词。if i in s:s = s.replace(i, '*')input(f"\n\n{' ':>8}输出:{color(s,'f_green')}{cut_line()}")return sscreens = [] # 屏蔽词库。
main() # 系统主执行模块调用。

回首页

相关文章:

  • 【经典算法】:英雄联盟中打字屏蔽系统的实现

上一篇: pandas 数据类型之 DataFrame

下一篇: 练习:三子棋


  • New:Python班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)(1174阅读)
  • Python字符串居中显示(1068阅读)
  • 练习:求偶数和、阈值分割和求差( list 对象的两个基础小题)(1499阅读)
  • 用 pandas 解一道小题(1916阅读)
  • 可迭代对象和四个函数(1045阅读)
  • “快乐数”判断(1206阅读)
  • 罗马数字转换器(构造元素取模)(1894阅读)
  • 罗马数字(转换器|罗生成器)(2572阅读)
  • Hot:让QQ群昵称色变的代码(18177阅读)
  • Hot:斐波那契数列(递归| for )(3396阅读)
  • 柱状图中最大矩形(1625阅读)
  • 排序数组元素的重复起止(1215阅读)
  • 电话拨号键盘字母组合(1284阅读)
  • 密码强度检测器(1746阅读)
  • 求列表平衡点(1787阅读)
  • Hot: 字符串统计(3638阅读)
  • Hot:尼姆游戏(聪明版首发)(3349阅读)尼姆游戏(优化版)(903阅读)
推荐条件 点阅破千

回首页


老齐漫画头像

精品文章:

  • 好文力荐:《python 完全自学教程》齐伟书稿免费连载
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回首页

Python 入门指南【Python 3.6.3】


好文力荐:

  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32887.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域名被微信/QQ红了(被封锁、被屏蔽、被和谐)后最好的解决方法

关于域名总被微信封杀、屏蔽、拦截,等问题。简单说下自己的经验。有不少用户私信我。累死了,统一说下: 域名被微信封杀,显示的是链接无法访问; 域名被微信拦截,是跟淘宝一样 - 如需浏览,请长按…

Adguard Home导致bilibili图片视频被屏蔽记录

Adguard Home导致bilibili图片视频被屏蔽记录 一、问题 使用openwrt中的Adguard,出现了打开bilibili后,里面的视频图片无法显示,点进去的视频也无法观看的问题。 二、尝试解决 跳过Adguard,即设置DNS不通过Adguard。没效果。关闭…

四种方法检测网站是否被微信、QQ等拦截屏蔽

如今公司的线上网站、App业务都离不开微信、QQ这样的社交软件来推广,有时候分享链接一旦点击的人多了,就被微信、QQ拦截或标红了,非常影响业务的发展和用户体验。那如何监控线上业务的持续性呢?今天我们就介绍几种方法来知道域名有…

保存图片到本地和分享多张图片到QQ、微信、WhatsApp、Facebook等平台

保存图片到本地和分享多张图片到QQ、微信、WhatsApp、Facebook等平台 一、分享图片到各个平台多种方式:如第三方的sdk:ShardSDK,直接通过分享到的平台的包名来分享图片的原生方法 1.通过ShareSDK分享图片,不要忘记导入相应的应用包和初始化…

这样写代码,同事乐开花

往期热门文章: 1、Java接口开发,不用写Controller、Service、Dao、Mapper、XML、VO,自动生成! 2、为什么说程序员是一个极度劳累的工作? 3、Spring6的新特性,正式“抛弃”feign了 4、微软美国全职员工福利&…

【资源分享】经典老歌、KTV必点歌曲分享

不知道各位小伙伴有没有遇到过这种情况。长辈叫你帮他下载一些老歌放U盘里面,于是打开搜索引擎正准备大展手脚时,却发现是一个又一个的付费购买。 本人也是在这上面与搜索引擎做了不少斗争,以下包含了KTV必点歌曲五百多首,经典粤…

基于GPT3.5模型搭建的聊天系统BAIChat

1. 使用chatgpt前提条件 需要特殊的网络环境。如果是小白,不会搭建网络环境,可以关注我私信我,在线帮你搭建网络环境。 2.BAIChat链接 https://chatbot.theb.ai/#/chat/1686535596065 GPT3 研究背景 最近的研究表明,在 pretrai…

【编程必备】保姆级教学:简单教你使用 Python 调用 ChatGPT-3.5-API

前天 OpenAI 开放了两个新模型的api接口,专门为聊天而生的 gpt-3.5-turbo 和 gpt-3.5-turbo-0301。 ChatGPT is powered by gpt-3.5-turbo, OpenAI’s most advanced language model. 从上面这句话,我们可以知道现在 chat.openai.com 官网就是由 gpt-3.5…

GPT时代,超强大脑才是你的第一财富。

ChatGPT 爆火后,无数人把这个无所不能的对话机器人当做生活、工作助理,用其代替搜索引擎、生成流畅的翻译、甚至撰写文章、剪辑视频、分析数据,享受着“不劳而获”的便利和高效体验。 自然而然地,一些老生常谈的话题,比…

新书上市 | 从大脑认知开始,全方面提高编程能力,助你摆脱“GPT焦虑症”

目录 一、ChatGPT火爆全网二、《程序员超强大脑》三、本书内容四、本书特色五、作译者简介1、费莉安赫尔曼斯(Felienne Hermans)2、蒋楠 大家好,我是哪吒。 🏆本文收录于,49天精通Java从入门到就业。 全网最细Java零…

别贩卖焦虑了,人工智能永远无法取代你

每一次生产力的变革,在带来技术进步与更高效率的同时,也都无可避免的会带来一波失业浪潮,当下的人工智能浪潮自然也不例外。现在,第一批因为AI失业的人已经出现了…… 因为AI失业的第一批人,已经开始在游戏行业出现了 …

基于线上考研资讯数据抓取的推荐系统的设计与实现(论文+源码)_kaic

摘 要 随着互联网的飞速发展,互联网在各行各业的应用迅速成为众多学校关注的焦点。他们利用互联网提供电子商务服务,然后有了“考研信息平台”,这将使学生考研的信息平台更加方便和简单。 对于考研信息平台的设计,大多采用java技…

【.NET AI Books】问题分类和技能使用大全

第一章 问题分类 我会把问题设定放在首位,也就是我们的第一章。毕竟所有生成式的 AI 都是需要基于问题给出答案。所以我一直不认同人工智能会取代人类,没有人类哪来问题呢? ChatGPT 的神奇之处在于它可以根据你的问题去完成不同的工作&…

周期函数傅里叶级数的各次谐波系数确定

周期函数傅里叶级数的各次谐波系数确定 在不考虑直流分量的情况下对于周期函数的系数进行计算确定。 简单阐述原理过程。 实例场景: 假定被采样信号的模拟信号时一个周期性时间函数,除基波外还含有不衰减的直流分量和各次函数。 基本形式 周期函数的…

奈奎斯特稳定性判据的步骤(含详细推导)

奈奎斯特稳定性判据的步骤: 一、作出半闭合曲线1.作出开环系统的奈奎斯特曲线2.补圆 二、计算R的大小三、判断Z是否为0 提示:本文只含有奈奎斯特判据的步骤,适合期末防挂科的同学,若想要透彻地了解奈奎斯特判据的原理,…

《重学 Java 设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 文章目录 一、前言二、简介1. 谁发明了设计模式?2. 我怎么学不会设计模式?3. 适合人群4. 我能学到什么5.…

三角函数到傅立叶级数

我讨厌傅立叶级数的叫法,这老让我感觉到很深奥,但当我用三角级数时,感觉就大不同了!! 下面进入正题 正弦波 信号处理中极为极为极为重要的一个函数,三角函数,之所以叫做三角函数,是因为它的计算方式和直角三角密切相…

三大变换与自控(一)傅里叶级数

这一系列文章记录了我在学习三大变换时的心得。 首先从傅里叶变换开始,这是将一个信号从时域转变成频域的算法,在信号处理方面非常有用。 如果正在阅读这篇文章的读者还对傅立叶分析没有一个比较清楚的感性认识,建议先阅读一下知乎的一篇文…

python实现FFT(快速傅里叶变换)

python实现FFT(快速傅里叶变换) 简单定义一个FFT函数,以后的使用中可以直接幅值粘贴使用。 首先生成了一个频率为1、振幅为1的正弦函数: 然后计算该信号的频率和幅值,得到计算结果如下: 其中计算相位角…

《Mybatis 手撸专栏》第1章:开篇介绍,我要带你撸 Mybatis 啦

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 1. 为甚,撸Mybatis 我就知道,你会忍不住对它下手!🤨 21年带着粉丝伙伴撸了一遍…