- PythonShowMeTheCode(0011-12): 检测
- PythonShowMeTheCode(0000): 给头像加上
- PythonShowMeTheCode(0005): 改变图像尺
- PythonShowMeTheCode(0004): 检查单词个
- PythonShowMeTheCode(0017-19): xl
- PythonShowMeTheCode(0007): 统计代码行
- PythonShowMeTheCode(0006): 统计重要词
- PythonShowMeTheCode(0014-16): JS
- PythonShowMeTheCode(0001): 生成激活码
- PythonShowMeTheCode(0008-9): 抓取网
1. 题目
第 0011 题: 敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,否则打印出 Human Rights。
第 0012 题: 敏感词文本文件 filtered_words.txt,里面的内容和0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好城市」。
北京
程序员
公务员
领导
牛比
牛逼
你娘
你妈
love
sex
jiangge
2. 思路
- 首先,从敏感词文件中读取到敏感词汇,放入容器中
- 然后,获取用户输入,判断输入是否包含敏感词汇, 并输出相对应的结果(0012题则需要对字符串进行替换)。
3. 实现
# -*- coding: utf-8 -*-
def get_filters(path):
if path is None:
return
filters = []
with open(path, encoding="utf-8") as f:
for line in f.readlines():
if "\n" in line:
filters.append(line[:-1])
else:
filters.append(line)
return filters
def main_0011():
filters = get_filters("1.txt")
while 1:
tmp = input("plz input: ")
if tmp == "0":
print("Exit")
break
else:
if tmp in filters:
print("Freedom")
else:
print("Human Rights")
if __name__ == "__main__":
main_0011()
def main_0012():
filters = get_filters("1.txt")
while 1:
tmp = input("plz input:")
if tmp == "0":
print("Exit")
break
for filter_word in filters:
new_str = ""
if filter_word in tmp:
if len(re.findall(u"[\u4e00-\u9fa5]+", filter_word)) > 0:
len_new_str = len(filter_word)
else:
len_new_str = 1
for i in range(len_new_str):
new_str += "*"
tmp = str(tmp).replace(filter_word, new_str)
print(tmp)
0012题要求将北京替换为**
两个星号, 所以需要先计算敏感词汇的字符数, len()函数即可达到目的。当敏感词汇为一个英文单词时,只替换成一个星号即可。
本例中采用正则来匹配敏感词中是否含有中文。
4. 字符串前面加r
或者u
的意义
- 字符串前面加
r
是为了告诉编译器这个string是个raw string,不要转义 '' ,一般用于正则表达式, re模块中。 - 字符串前面加
u
是为了表示该字符串为Unicode编码的。 - 字符串前面加
b
是为了令字符串以字节形式表示。
网友评论