第1.7题:Python敏感词检测

题目来自:Python 练习册题目1.7:敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,否则打印出 Human Rights。


Python find()方法

描述

Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

语法

find()方法语法:
str.find(str, beg=0, end=len(string))

参数

str — 指定检索的字符串
beg — 开始索引,默认为0。
end — 结束索引,默认为字符串的长度。

返回值

如果包含子字符串返回开始的索引值,否则返回-1。

实例

以下实例展示了find()方法的实例:

1
2
3
4
5
6
7
8
info = 'abca'
print info.find('a')##从下标0开始,查找在字符串里第一个出现的子串,返回结果:0

info = 'abca'
print info.find('a',1)##从下标1开始,查找在字符串里第一个出现的子串:返回结果3

info = 'abca'
print info.find('333')##返回-1,查找不到返回-1

Python strip()方法

描述

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。

语法

strip()方法语法:
str.strip([chars]);

参数

chars — 移除字符串头尾指定的字符。

返回值

返回移除字符串头尾指定的字符生成的新字符串。

实例

以下实例展示了strip()函数的使用方法:

1
2
str = "0000000this is string example....wow!!!0000000";
print str.strip( '0' );

以上实例输出结果如下:
this is string example….wow!!!

Python map()方法

描述

很简单,第一个参数接收一个函数名,第二个参数接收一个可迭代对象。

语法

map(f, iterable)
基本上等于:
[f(x) for x in iterable]

实例

1
2
3
4
5
6
>>> def add100(x):
... return x+100
...
>>> hh = [11,22,33]
>>> map(add100,hh)
[111, 122, 133]

参考代码

filtered_words.txt
将文件下载到D盘内即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#coding: utf-8
import cmd
# 存放敏感词文件的路径
filtered_words_filepath = 'd:/filtered_words.txt'
class CLI(cmd.Cmd):

def __init__(self): #初始基础类方法
cmd.Cmd.__init__(self) # 初始化,提取敏感词列表
self.intro = 'Python敏感词检测:' #输出欢迎信息
f = open(filtered_words_filepath)
self.words = list(map(lambda i: i.strip('\n'), f.readlines()))
self.prompt = ">>> " # 定义提示符

def default(self, line):
if any([i in line for i in self.words]):
print ('Freedom')
else:
print ('Human Rights')

def do_quit(self, arg):
exit()
return True

if __name__ =="__main__":
cli = CLI()
cli.cmdloop()


其实这个地方出现过一个错误,map()形成的iterable是一次性的。

也就是如果不保存,直接迭代之后,self.words =map(lambda i: i.strip('\n'), f.readlines())
self.words 里边的数据会丢失,因此这个地方加了一个list()函数,将iterable到处保存。

第1.7题:Python敏感词检测

https://iii.run/archives/8f56d9a729f7.html

作者

mmmwhy

发布于

2017-02-15

更新于

2022-10-08

许可协议

评论