聊城东昌府区建设路小学网站,wordpress一周热门文章,旅游网站建设和开发,什么网站做美式软装设计一、原题
参考编程模板#xff0c;完善代码#xff0c;实现以下功能。 利用 jieba 库实现中文分词。对分词后的列表进行去重处理#xff0c;然后将分词结果中字符数大于等于 3 的词语…一、原题
参考编程模板完善代码实现以下功能。 利用 jieba 库实现中文分词。对分词后的列表进行去重处理然后将分词结果中字符数大于等于 3 的词语按照字符顺序排序写入到文件 out1.txt 文件中。 out1.txt 文件中每一行是分词后的一个词语。形式如下所示 二十一
美国麻省理工学院
语言学
形象思维
突破性
总的来说
思维科学
软硬件
尼尔逊
温斯顿
机器人
......
二、题目分析 原题主要考察1. jieba分词 2. 文本的打开与写入 3. for 循环和if 条件判断。
算法可以用open()来打开文件jieba进行分词获得句柄后用write写入由于是按行写入注意添加换行符。
另外题目中还提到要把结果去重所以可以用set进行去重。
三、两种解法
1. 官方答案
答案特点是紧扣大纲中规中矩代码易于理解不好的是代码过多有时可能会漏掉关闭文件。
# -*- coding:utf-8 -*-This is a python123.io file.import jieba #导入中文分词库
f open(out1.txt,w) #以写的方式打开out1.txt文件
fi open(data.txt,r,encodingutf-8) #以读的方式打开data.txt文件
#使用jieba.lcut()对data.txt文件读出字符串进行中文分词返回列表lst
lst jieba.lcut(fi.read())
s set(lst) #使用set函数将列表lst转换为集合实现元素去重
s1 sorted(s) #将列表按字符顺序排序
ls list(s1) #将集合重新变成列表ls
for item in ls: #遍历去重后ls每一个元素if len(item) 3:f.write(item \n) #将符合条件的字符串写入out1.txt中
fi.close() #关闭文件fi
f.close() #关闭文件f
2. 个人解法
主要是用列表推导式把for循环、if条件写在了一起最后用writelines写入文件
with open(data.txt,r,encodingutf-8) as f:text f.read()fenci jieba.lcut(text)lst [elm for elm in fenci if len(elm)3] #去除字符长度小于3的短语
with open(out1.txt,w) as fi:fi.writelines([i\n for i in sorted(set(lst))]) #用writelines写入去重和排序后的列表。
个人解法比参考答案减少五行代码。主要原因在于用with open()取代了open这样可以提升程序运行的效率避免了因忘记关闭文件而程序报错的情况。
四、学后反思
学习要有日拱一卒的精神坚持自己先审题、分析、做题、写代码然后对比参考答案找到自己存在的不足想想如何改进自己或者如何优化参考答案。可以用with open()writelines和列表推导式优化代码提升程序运行效率。