第1.7题:Python敏感词检测
in Python with 0 comment

第1.7题:Python敏感词检测

in Python with 0 comment
题目来自: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()方法的实例:

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()函数的使用方法:

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]

实例

>>> def add100(x):
...     return x+100
... 
>>> hh = [11,22,33]
>>> map(add100,hh)
[111, 122, 133]

参考代码

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

#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到处保存。

Responses

From now on, bravely dream and run toward that dream.
陕ICP备17001447号