统计水浒传完整姓名前十位:jieba库应用,python编程

直入主题,我们需要用到jieba库的一些函数,这个python库是国内大神编写的。

我们需要用到文件的一部分内容,这里我们还需要两个txt文本

1.水浒传部分文本(也可以是全部文本)

2.水浒传内所有完整的姓名(除称号外)

文本在网上可以找得到,我直接上代码了

import jieba
txt=open("AllManAreBrothers.txt","rb").read()
txt_name=open("heros_name.txt","rb").read()
words=jieba.lcut(txt)
words_name=jieba.lcut(txt_name)
counts={}
for word in words:
    if len(word)==1:
        continue
    if word not in words_name:
        continue
    counts[word]=counts.get(word,0)+1
sorted(counts.items(), key=lambda x:x[0], reverse=True)
for i in range(10):
    word,count=items[i]
    print("{0:<10}{1:>5}".format(word,count))
  1. import jieba声明jieba库
  2. 这里第一个文本名是部分水壶的文本,第二个文本名是姓名的文本
  3. 用两个变量去承接两个jieba库的函数,这个 jieba.lcut() 是取出文本中的词语,并以列表的形式返回
  4. 我们用for循环遍历水浒文本中的内容,如果word的长度为一,说明是符号,如果word不存在与姓名文本说明不是完整姓名,那么都跳过本次循环,我们将符合条件的word存入counts中,coounts是一个空字典,前面已经声明
  5. items函数返回可字典中可遍历的 元组数组也就是元组组成的数组
  6. sorted(counts.items(), key=lambda x:x[0], reverse=True)是一个排序功能,它根据字典的值进行键值排序 reverse=True是从大到小排序。lambda需要自己去了解,不好详解,
  7. 这里的print里面的东西{0}和{1}是位置<是左对齐10是数字宽度,同理>是右对齐这些需要自己去深挖

你可能感兴趣的:(统计水浒传完整姓名前十位:jieba库应用,python编程)