import jieba file=open(r"C:\Users\yikandan\Desktop\红楼梦.txt","r",encoding='utf-8') txt=file.read() wordsList=jieba.lcut(txt) actors=[('贾宝玉',"宝玉"),("林黛玉","黛玉"),("薛宝钗","宝钗"),("王熙凤","凤姐"),("贾母","老太太"),("袭人",),("探春",),('贾琏',),('王夫人','夫人')] dictActors={} for actor in actors: if len(actor)==2: count1=wordsList.count(actor[0]) count2=wordsList.count(actor[1]) dictActors[actor[0]]=count1+count2 else: count1=wordsList.count(actor[0]) dictActors[actor[0]]=count1+count2 items=list(dictActors.items()) items.sort(key=lambda x:x[1],reverse=True) for i in range(len(items)): word,count=items[i] print("{}\t{}".format(word,count))给我逐行解释这段代码
时间: 2024-01-03 13:04:58 浏览: 133
jieba-0_jieba安装0.4.1_jieba-0.42.1.tar_jieba-0.42.1.tar.gz_jieba-
5星 · 资源好评率100%
这段代码是用来读取《红楼梦》这本小说,然后统计小说中出现的人物名字及其出现的次数的。
代码的第一行是导入了一个名为jieba的分词库。
第二行打开了《红楼梦》这本小说的文件,并以只读方式读取文件中的内容。
第三行使用分词库jieba对小说文本进行分词,得到一个包含所有分词结果的列表wordsList。
第四行定义了一个包含小说中出现的人物名字的列表actors,其中每个元素都是一个包含人物名字的元组。
第五行定义了一个空字典dictActors,用来存储人物名字及其对应的出现次数。
第六行开始遍历actors列表中的每个元素,如果该元素是一个包含两个人物名字的元组,则分别统计这两个人物名字在小说文本中出现的次数,并将这两个次数相加后存入dictActors字典中;如果该元素只包含一个人物名字,则直接统计该人物名字在小说文本中出现的次数并存入dictActors字典中。
第九行将dictActors字典中的所有键值对以列表的形式取出来,并按照键所对应的值(出现次数)进行降序排序。
第十一行开始遍历排序后的键值对列表,将每个人物名字及其出现次数以格式化的形式输出。
阅读全文