Python入門案例之找出文件中出現(xiàn)次數(shù)最多的10個(gè)單詞
最近有點(diǎn)需求,在看python的入門基礎(chǔ),看完入門基礎(chǔ)之后,跟著練習(xí),找到文件中出現(xiàn)次數(shù)最多的10個(gè)單詞,以此熟悉語(yǔ)法。
語(yǔ)法概要
mac電腦命令行輸入python3,回車可以執(zhí)行語(yǔ)句,exit()退出 python3 xx.py可以執(zhí)行文件。
- 初始賦值,一般用
None - 聲明變量不需要任何多余,沒有
var/const巴拉巴拉 - 語(yǔ)法用
:表示一起,縮進(jìn)表示嵌套關(guān)系 - 字典就是對(duì)象,用
dict()新建,注意dict({'a':1})必須要用引號(hào)括起來鍵 - 字典獲取值的時(shí)候,鍵必須存在不然會(huì)報(bào)錯(cuò),一般用
xxDict.get('a',0)來獲取,這樣沒有就賦值0,有就獲取 - 列表就是數(shù)組,用
list()新建,注意不能獲取超過list長(zhǎng)度的索引,如果取局部的話xxList[0:10]這樣就行 - 元組,在js中沒有,雖然ts中有,元組類似列表,但不能編輯,表示為
(1,2),如果你的列表不需要編輯,就可以用元組替換 - sorted可以排序的方法,排序數(shù)組、對(duì)象的key、元組,通常排序?qū)ο蟮臅r(shí)候,如果需要排序value的話,可以用
sorted(([(v,k) for (k,v) in xxDict.items()]))快速得到排序后的元組列表,從大到小的話,第二參數(shù)加上reverse=True - 打開文件
open(filepath),但返回值不是字符串,需要for line in open(filepath),拿到每行的文本 - 字符串變成數(shù)組,用
split,默認(rèn)分隔符是空格 try: expect:關(guān)鍵語(yǔ)句,記得捕獲錯(cuò)誤,需要的話退出程序quit()
代碼
# 本文件是獲取 任意文件里出現(xiàn)次數(shù)前10的word
# 借此學(xué)習(xí)python的簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)
# python3 xx.py 執(zhí)行就可以
filename = input('文件的路徑:')
# 這里用戶輸入的文件路徑可能打不開,所以try下,如果出錯(cuò),程序退出
try:
# 打開文件,獲取文件手柄
handle = open(filename)
except:
print('File Cannot be opened',filename)
quit()
countDict = dict()
# 遍歷文件的每行,line就是每行的字符串
for line in handle:
# 空格為分隔符,得到每行的單詞列表
words = line.split()
# 遍歷每行的單詞列表,word是每個(gè)單詞
for word in words:
# 此行相當(dāng)于,沒有key的話,新建key取0,有的話返回
countDict[word] = countDict.get(word,0) + 1
# 等同于
# # word沒出現(xiàn)在dic的話,需要賦值,不然讀的話會(huì)報(bào)錯(cuò)
# if word not in countDict :
# countDict[word] = 0
# # 處理完之后,都加1
# countDict[word] = countDict[word] + 1
# 得到各單詞出現(xiàn)的次數(shù)字典
# print(countDict)
# 最大出現(xiàn)的次數(shù)
bigCount = None
# 最大出現(xiàn)的次數(shù)對(duì)應(yīng)的word
bigKey = None
# 遍歷字典,key就是word,value就是次數(shù)
for word in countDict:
count = countDict[word]
# 注意None的情況和大于的情況都需要賦值
if bigCount is None or count>bigCount:
bigCount = count
bigKey = word
# print(bigCount)
# print(bigKey)
# python的字典key必須是字符串包裹
# a = dict({'a':1,'b':2})
# items字典會(huì)返回元組列表 [('a', 1), ('b', 2)]
# print(a.items())
# sorted排序元組列表
# 將countDict變成元組列表,然后將k,v對(duì)調(diào),變成新元組列表
sortList = sorted(([(count,word) for (word,count) in countDict.items()]),reverse=True)
# 等同于以下
# # 裝(value,key)的list
# tempList = list()
# # 遍歷countDict.items(),能同時(shí)獲取key,value
# for (word,count) in countDict.items():
# # key value調(diào)換下位置
# newTuple = (count,word)
# # 裝進(jìn)tempList
# tempList.append(newTuple)
# # sorted 排序元組的時(shí)候,先按照元組的第一項(xiàng)排序,這邊就是按照count排序,且從大到小
# sortList = sorted(tempList,reverse=True)
# 取前10
tenList = sortList[0:10]
# 還需要將key和value反轉(zhuǎn)回來
resDict = dict()
for (count,word) in tenList:
resDict[word] = count
print(resDict)到此這篇關(guān)于Python入門案例之找出文件中出現(xiàn)次數(shù)最多的10個(gè)單詞的文章就介紹到這了,更多相關(guān)Python找出文件出現(xiàn)次數(shù)最多單詞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python繪圖實(shí)現(xiàn)坐標(biāo)軸共享與復(fù)用詳解
這篇文章主要為大家詳細(xì)介紹了Python在繪圖時(shí)如何實(shí)現(xiàn)坐標(biāo)軸共享與復(fù)用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02
sqlalchemy對(duì)象轉(zhuǎn)dict的示例
這篇文章主要介紹了sqlalchemy對(duì)象轉(zhuǎn)dict的示例,需要的朋友可以參考下2014-04-04
關(guān)于Python的json字符串與json模塊解讀
這篇文章主要介紹了關(guān)于Python的json字符串與json模塊解讀,JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C,?C++,?C#,?Java,?JavaScript,?Perl,?Python等),這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言,需要的朋友可以參考下2023-07-07
Matplotlib 生成不同大小的subplots實(shí)例
今天小編就為大家分享一篇Matplotlib 生成不同大小的subplots實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
基于Python實(shí)現(xiàn)新年倒計(jì)時(shí)
眼看馬上春節(jié)就要來臨了,所以滿懷期待的寫了一個(gè)Python新年倒計(jì)時(shí)的小工具!文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-01-01
pandas統(tǒng)計(jì)重復(fù)值次數(shù)的方法實(shí)現(xiàn)
這篇文章主要介紹了pandas統(tǒng)計(jì)重復(fù)值次數(shù)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
python 實(shí)現(xiàn)多進(jìn)程日志輪轉(zhuǎn)ConcurrentLogHandler
這篇文章主要介紹了python 實(shí)現(xiàn)多進(jìn)程日志輪轉(zhuǎn)ConcurrentLogHandler,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03

