《三国演义》是中国古典四大名著之一,曹操是其中的主要人物,考生文件夹下文件“data.txt”给出《三国演义》简介。 问题1:请编写程序,用Python中文分词第三方库jieba对文件“data.txt”进行分词,并将结果写入文件“out.tx

admin2021-03-17  33

问题 《三国演义》是中国古典四大名著之一,曹操是其中的主要人物,考生文件夹下文件“data.txt”给出《三国演义》简介。
      问题1:请编写程序,用Python中文分词第三方库jieba对文件“data.txt”进行分词,并将结果写入文件“out.txt”,每行一个词。例如:
      内容简介
      编辑
      整个
      故事
      在
      东汉
      ……
      在考生文件夹下给出了程序框架文件“PY301-1.py”,补充代码完成程序。
      试题程序:
      #请在________处使用一行代码或表达式替换
      #注意:请不要修改其他已给出的代码
      import jieba
      f=open(’data.txt’,’r’)
      lines=f.readlines()
      f.close()
      f=open(’out.txt’.’w’)
      for line in lines:
           line=________(1)________    #删除每行首尾可能出现的空格
           wordList=________(2)________     #用jieba库对每行内容进行分词
           f.writelines(’\n’________((3)________))#将分词结果存到文件out.txt中
      f.close()
      问题2:对文件“out.txt”进行分析,输出“曹操”出现的次数。
      在考生文件夹下给出了程序框架文件“PY301-2.py”,补充代码完成程序。
      试题程序:
      #请在________处使用一行代码或表达式替换
      #注意:请不要修改其他已给出代码
      import jieba
      f=open(’out.txt’,’r’)    #以只读模式打开文件
      words=f.readlines()
      f.close()
      D={}
      for w in________(1)________:  #词频统计
          D[w[:-1]]=________(2)________+1
      print("曹操出现次数为:{}".format(________(3)________))

选项

答案(1)import jieba f=open(’data.txt’.’r’) lines=f.readlines() f.close() f=open(’out.txt’,’w’) for line in lines: line=line.strip() wordList=jieba.lcut(line) f.writelines(’\n’.join(wordList)) f.close() (2)import jieba f=open(’out.txt’,’r’) words=f.readlines() f.close() D={} for w in words: D[w[:-1]=D.get(w[:-1],0)+1 print("曹操出现次数为:{}".format(D["曹操"]))

解析 (1)本题要使用jieba库,首先用import关键字引用jieba库。打开“data.txt”文件后,需要用readlines()函数读入所有行,以每行为元素形成列表lines。然后用for循环遍历该列表中的每个元素并进行分词。在遍历每个元素时,首先用strip()方法删除元素首尾出现的空格。因此第1空填入line.strip();再使用jieba库的lcut()方法对元素进行精准分词。因此第2空填入jieba.1cut(line);最后将换行符插入每个词组之间,并写入文件“out.txt”中。因此第3空填入join(wordList)。
(2)首先用import关键字引用jieba库。打开“out.txt”文件后,需要用readlines()方法读入所有行,以每行为元素形成列表words,然后用for循环遍历该列表中每个元素出现的次数。因此,第1空填入words。
在遍历每个元素时,若字典D中没有键与该元素相同,就将该元素作为字典D的一个键,该键所对应的值置为1;若字典D中存在键与该元素相同,就将该键对应的值加1。因此,第2空填入D.get(w[:-1],0)。
题目要求的是输出“曹操”出现的次数,字典D中键“曹操”对应的值即为该词出现的次数。因此,第3空填入D["曹操"]。
转载请注明原文地址:https://kaotiyun.com/show/si6p777K
0

最新回复(0)