Problem: 敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,否则打印出 Human Rights。

北京
程序员
公务员
领导
牛比
牛逼
你娘
你妈
love
sex
jiangge

Solution: Sensitive Words, Python:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# @Date : 2015-03-20 22:54:57
# @Author : NSSimacer
# @Version : 1.0
import sys
import easygui
# 设置系统编码为 UTF-8,处理中文乱码问题
reload(sys)
sys.setdefaultencoding('utf-8')
def word_filter(word):
'''
过滤敏感词
'''
filtered_words = []
with open('filtered_words.txt', 'r') as f:
for line in f:
filtered_words.append(line.strip().lower())
if word in filtered_words:
print 'Freedom!'
else:
print 'Human Rights!'
if __name__ == '__main__':
while True:
# 用 raw_input 一直都是 EOF,这里改用 easygui 的 enterbox 组件输入
word = easygui.enterbox(
msg='Enter a word: ', title='Word Filter', strip=True)
if word and word != 'exit':
word_filter(word.lower())
else:
print 'Bye!'
break

主要目的是练习 Python 读取文件等基本操作。可能需要注意的是中文编码的处理,这在之前的博文中也提到过,还有 raw_input(self, args) 在某些编辑器(如 Sublime Text)出现的 EOF 错误,解决方式是安装 SublimeREPL,这样就可以在 Sublime Text 中打开 Python Console,再在 Console 里运行脚本。这里使用 easygui.enterbox(self, args) 这一简易 GUI 组件接收输入。

关于 easygui,请参考:EasyGUI.

题目来源:Python 练习册,每天一个小程序 THX!