日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【python二级】红楼梦

發布時間:2024/3/7 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【python二级】红楼梦 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述

文本文件“紅樓夢. txt”中包含了《紅樓夢》小說前20章內容,“ 停用詞. txt”包含了需要排除的詞語。請修改模板,實現以下功能。????????????????????????????????????????????????????????????????????????????????????????????????

1.對“紅樓夢. txt”中文本進行分詞,并對人物名稱進行歸-化處理,僅歸一化以下內容:????????????????????????????????????????????????????????????????????????????????????????????????

鳳姐、鳳姐兒、鳳丫頭歸-為鳳姐
寶玉、二爺、寶二爺歸-為寶玉
黛玉、顰兒、林妹妹、黛玉道歸-為黛玉
寶釵、寶丫頭歸一為寶釵
賈母、老祖宗歸-為賈母
襲人、襲人道歸一為襲人
賈政、賈政道歸一為賈政
賈鏈、璉二爺歸一為賈璉
2.不統計“停用詞.txt"文件中包含詞語的詞頻(名字必須大于一個字)。????????????????????????????????????????????????????????????????????????????????????????????????

3.提取出場次數不少于40次的人物名稱,將人物名稱及其出場次教按照遞減排序,保存到result.csv文件中,出場次數相同的.則按照人物名稱的字符順序排序。????????????????????????????????????????????????????????????????????????????????????????????????

輸出示例????????????????????????????????????????????????????????????????????????????????????????????????

寶玉,597
鳳姐,296
一個,179
如今,132
黛玉,113
一面,112

import jiebaf = "紅樓夢.txt" sf = "停用詞.txt" fo=open(f,'r',encoding='utf-8') txt=jieba.lcut(fo.read()) with open(sf,'r',encoding='utf-8') as f:m=f.read().splitlines() txt0=[x for x in txt if x not in m]counts={} for word in txt0:if len(word)==1:continueelif word == '鳳姐兒' or word == '鳳丫頭':rword = '鳳姐'elif word == '二爺' or word == '寶二爺':rword = '寶玉'elif word == '顰兒' or word == '林妹妹' or word == '黛玉道':rword = '黛玉'elif word == '寶丫頭':rword = '寶釵'elif word == '老祖宗':rword = '賈母'elif word == '襲人道':rword = '襲人'elif word == '賈政道':rword = '賈政'elif word == '璉二爺':rword = '賈璉'else:rword = wordcounts[rword] = counts.get(rword, 0) + 1 items=list(counts.items()) items.sort(key=lambda x:x[1], reverse=True) with open('result.csv','a')as f:for i in items:key,value=iif value <40:breakf.write(key+','+str(value)+'\n')print(key+','+str(value))
簡要說明:

這道題實際上是完成兩個事情:1、把紅樓夢文章里包含停用詞的內容刪去;2、統計人物出場次數,同時注意一個人物在書里會有很多叫法,然后把統計出的內容寫在一個csv文件里。

實現第一步要做的事:1、把紅樓夢用結巴分詞分好放進名為txt列表里 2、用f.read().splitlines()方法,把停用詞轉化為一個列表,每個元素是一個停用詞。3、用列表的自定義方式,對txt每一個元素x遍歷,如果它不在停用詞列表里,就放入新的列表txt0,這樣就完成了停用詞的刪去。

實現第二步要做的事:定義一個空字典,然后遍歷前面做好的txt0,如果元素長度為1,證明是標點或者空格,直接用continue跳過這個元素。如果是我們想要的人名,就作一些分類,并把rword改成歸一的那個名字。然后結尾用count[rword]=count.get(rword,0)+1,去把名字和次數分別作為鍵和值放進這個字典里。

然后是排序(常見的列表排序方法),輸出。key,value=i,就是把每個元組的第一個第二個元素分別賦值給key和value,然后是對value值的判斷,大于等于40就輸出。注意寫文件的時候,不要漏掉逗號以及’\n’。print()函數由于自帶換行,就不用加’\n’。

總結

以上是生活随笔為你收集整理的【python二级】红楼梦的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。